Robot Framework之python脚本调用

news2024/10/7 14:29:33

目录

目录结构

​编辑

Python函数作为关键字

 一、通过Import Library关键字在*** Test Cases ***中引用python脚本

​编辑

二、通过Library关键字在*** Settings ***中引入python脚本 

 Python类作为测试库

一、通过Library关键字在*** Settings ***引入python脚本中的类 

二、通过Library关键字在*** Settings ***中导入sitepackage中的类

首先在site-packages目录下创建CustomLibrary目录,用于放自定义的library库 

问题总结

推荐做法:



目录结构

~/RobotFramework/TestDemo/PythonScript文件夹下的文件:

__init__.py

 

calculate.py 

printmsg.py 

 ~/RobotFramework/TestDemo下的show.py

Python函数作为关键字

 一、通过Import Library关键字在*** Test Cases ***中引用python脚本

1、直接在测试用例中使用关键字【Import Library    .py文件的绝对路径】,即可使用该py文件中定义的函数。

2、调用方法:

robot --test "01.通过Import Library关键字引用python脚本" /home/youngyoung/RobotFramework/TestDemo

二、通过Library关键字在*** Settings ***中引入python脚本 

1、直接在Settings中使用关键字【Library    .py文件的相对路径】,即可使用该py脚本中定义的函数。

2、调用方法:

robot --test "01.通过Library关键字引入python脚本" /home/youngyoung/RobotFramework/TestDemo

 Python类作为测试库

在robot文件的Settings中声明,有两种方式:

  • 模块法:点 .作为分隔符
  • 路径法:斜杠 /作为分隔符

Settings表中声明用python类做的测试库,用模块法

Settings表中声明资源文件和变量文件,用路径法或模块法

模块法必须创建__init__.py文件

一、通过Library关键字在*** Settings ***引入python脚本中的类 

1、在Settings表中声明用python类做的测试库,用模块法

2、调用方法:

注意:1.必须将工作目录切换到TestDemo根目录

           2.必须加上 -P参数将文件所在目录添加到PythonPath下,否则执行可能会报错,找不到Calculator这个类

TestDemo]$ robot -P . --test "01.通过Library关键字引入python脚本类中方法" /home/youngyoung/RobotFramework/TestDemo

二、通过Library关键字*** Settings ***中导入sitepackage中的类

首先在site-packages目录下创建CustomLibrary目录,用于放自定义的library库 

~/.local/lib/python2.7/site-packages/CustomLibrary/calculate.py

D:\python\python27\Lib\site-packages\CustomLibrary\calculate.py

 比如,在sitepackages目录下创建一个CustomLibrary文件夹,还需要在CustomLibrary文件夹下创建__init__.py文件,并且其中的类必须是CustomLibrary(类名要与库文件夹名称一致)。

 1、在Settings表中声明用python类做的测试库,用模块法

2、调用方法:

robot --test "01.通过Library导入sitepackage中的类方法" /home/youngyoung/RobotFramework/TestDemo

问题总结

以下自己遇到的一些问题的debug 

1、尽量在文件的开头加上:

# -- coding: utf-8 --  
或者
#coding=utf-8

因为python默认编码是ascii,所以如果代码中有(),或中文等等符号,会报错,提示编码不正确

2、如果写的代码里边有中文,尽量在文件开头加上以下3行代码:

import  sys 
reload(sys)  
sys.setdefaultencoding("utf-8")

3、如果在__init__方法中,定义了形参。则必须在导入库的时候,也要提供对应的参数。 不然会提示少给了变量的报错。

4、修改代码后,及时把对应的.pyc文件删除并且重启下robotframework 后,再导入。

5、如果还是有其他的报错,请点击Tools→View RIDE log ,查看并debug。

推荐做法:

~/RobotFramework/TestDemo2/Libraries/python文件夹 —— 存放python文件

__init__.py —— 空文件

add.py:

double.py:

~/RobotFramework/TestDemo2/Libraries/__init__.py —— 空文件

~/RobotFramework/TestDemo2/TestCase文件夹 —— 存放测试用例

TestSuite01.robot:

TestDemo2]$ robot --test test01 /home/youngyoung/RobotFramework/TestDemo2

TestSuite02.robot :

TestDemo2]$ robot -P . --test test02 /home/youngyoung/RobotFramework/TestDemo2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习_7、KNN

数据采用:电离层数据 KNN完整的代码电离层数据资源-CSDN文库 代码 import os import csv import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import …

DNS域名解析协议

文章目录 DNS域名解析协议一、DNS系统的作用1、DNS的定义2、DNS域名解析2.1 正向解析2.2 反向解析 3、DNS域名结构 二、DNS服务器类型1、主域名服务器2、从域名服务器3、缓存域名服务器4、权威dns服务器 三、DNS查询类型及原理1、查询方式1.1 递归查询1.2 迭代查询 2、DNS查询原…

墙地砖外形检测的技术方案-图像增强

基础理论 本例中使用漫射场光源,在采集图像的过程中,更容易可能会受环境中光源照射不足的可能性,导致采集的图像对比度不足,图像视觉效果较暗。可通过直方图均衡化或者直方图规定化。利用直方图规定化进行图像增强。 案例图片 如…

实例分割论文精读:Mask R-CNN

1.摘要 本文提出了一种概念简单、灵活、通用的实例分割方法,该方法在有效地检测图像中的物体同时,为每个物体实例生成一个实例分割模板,添加了一个分支,用于预测一个对象遮罩,与现有的分支并行,用于边界框…

node各个版本的下载地址

下载地址: https://nodejs.org/dist/ 可以下载多个版本,使用nvm控制切换(需要先安装nvm再安装node) nvm下载地址(访问的是github,请科学上网,下载后解压安装exe即可):h…

【leetcode题解C++】54.螺旋矩阵I and 59.螺旋矩阵II

54.螺旋矩阵I 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:m…

通俗易懂实现功能强大的实战项目 springboot+java+vue+mysql 汽车租赁管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

如何在免费云Colab上使用扩散模型生成图片?

前言 在人工智能技术的迅猛发展下,内容生成领域也迎来了一系列创新的突破。其中,使用扩散模型(如Stable Diffusion)从文字生成图片的AI技术备受瞩目。这一技术的出现,为我们创造栩栩如生的图像提供了全新的可能性。本…

ceph、gluster、longhorn选型对比

Ceph Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。 名词解释: RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储LIBRADOS: 一个允许应用程序直接访问 RADO 的库&…

机器学习 | 无监督聚类K-means和混合高斯模型

机器学习 | 无监督聚类K-means和混合高斯模型 1. 实验目的 实现一个K-means算法和混合高斯模型,并用EM算法估计模型中的参数。 2. 实验内容 用高斯分布产生 k k k个高斯分布的数据(不同均值和方差)(其中参数自己设定&#xff…

网络分流规则

现在的网络是越来越复杂。 有必要进行分流。 有一些geosite.dat是已经整理好的,包含许多的网站的分类: 分流规则: route规则 主要是: {"type": "field","outboundTag": "direct","domain&quo…

【Windows】你不能访问此共享文件夹,因为你的组织安全策略...解决方法

WinR键打开运行窗口,输入gpedit.msc进入本地组策略编辑器。 找到计算机配置,然后点击管理模板,找到网络,然后点击lanman工作站,将右侧窗口中的启用不安全的来吧登录开启就解决了 设置为已启用,应用后确定&a…

定时器--JAVA

定时器是软件开发中的一个重要组件,类似于一个"闹钟"当达到一个设定的时间之后,就执行某个指定好的代码(任务)。 Timer JAVA标准库中已经为我们实现了一个定时器,我们直接new就行了。 Timer timer new Timer(); Timer类中最重要的一个方法…

Fine-tuning:个性化AI的妙术

随着人工智能(AI)技术的迅猛发展,Fine-tuning作为一项重要而神奇的技术崭露头角。Fine-tuning俗称“微调技术。其本质上是对已有模型进行能力的迁移学习扩展,由于重新训练神经网络模型的成本太高,所以使用微调技术可以…

GZ075 云计算应用赛题第8套

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷8 某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenSt…

MySQL——深入数据库原理(事务及锁)

文章目录 锁行级锁共享 (S) 锁排他 (X) 锁间隙锁 表级锁意向锁自增锁Lock Table/DDL 事务ACID 原则1. 原子性 A2. 一致性 C3. 隔离性 I4. 持久性 D 隔离级别1. READ UNCOMMITTED(未提交读)2. READ COMMITTED(提交读)3. REPEATABLE…

强化学习应用(五):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

《计算思维导论》笔记:10.2 什么是数据库与数据库系统?

《大学计算机—计算思维导论》(战德臣 哈尔滨工业大学) 《10.2 什么是数据库与数据库系统?》 数据库 简单来讲,数据库就是相互有关联关系的数据的集合。 一个表聚集了具有相同结构类型的若干个对象一行数据反映了某一对象的相关…

【Python数据分析系列】实现txt文件与列表(list)相互读写转换(源码+案例)

这是Python数据分析系列原创文章,我的第199篇原创文章。 一、问题 平时在做数据分析或者程序开发的时候,需要将中间的一些结果或最后的处理结果保存下来,比如保存为txt格式的文本文件,这就涉及列表与txt之间的一种读取和写入操作…

【python】11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大…