rf使用python函数的简单介绍

RF自定义库

1、自定义的库

创新互联建站是一家专注于成都网站制作、成都做网站与策划设计,福鼎网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:福鼎等地区。福鼎做网站价格咨询:18982081108

2、使用自定义库

类或者模块的形式。

模块名称 = 库名。

模块名称和类名保持一致 = 库名

如果是类:ROBOT_LIBRARY_SCOPE = "GLOBAL"

使用:

Library 库名-相对路径

按照其他库的关键字调用方式一样。

创建测试库类/模块

静态(Static)API

最简单的办法是实现一个模块(用Python),或者类(用Python或Java),其中的方法(methods)直接映射为关键字名称。关键字接受和方法相同的参数。

创建测试库类或模块

测试库的实现可以是Python模块,也可以是Python或Java类。

如果是Python模块,使用 all� =['函数名称']来指定哪些函数是你想要被RF识别为关键字的。

参看RF自带库DateTime

python类的可参看String库、seleniumLibrary库等。

通过属性ROBOT_LIBRARY_SCOPE来控制

这个属性是一个字符串,可以有以下三种取值:

TEST CASE

为每个测试用例创建新的实例。如果有suite setup和suite teardown的话,同样也会新建。这是默认行

TEST SUITE

为每个测试集创建新的实例,最底层的测试集,也就是有测试用例文件组成的测试集,拥有属于自己的测试库实例,高层的测试集,都有属于自己的测试库实例。

GLOBAL(最常用)

整个测试执行过程中只有一个实例被创建。所有的测试集合测试用例共享这个实例。通过模块创建的测试库都是全局的。

注解

如果一个测试库被导入多次,每次使用不同的参数,则不管有没有定义作用域,每次都会新建一个实例。

写了一段python的测试脚本,想导入到RF里面运行,请问怎么操作

如果是命令行的,一般是捕获ctrl-c事件吧。importsignalimportsysdefsignal_handler(signal,frame):print('YoupressedCtrl+C!')sys.exit(0)signal.signal(signal.SIGINT,signal_handler)print('PressCtrl+C')signal.pause()

RF变量的共享使用、python测试库

Variable表中声明变量

资源文件里面创建变量

和套件文件中的用户关键字一样,套件文件中的变量表里面的变量,其作用范围只是该套件文件。我们可以定义在资源文件中。资源文件变量的定义,和上述测试套件文件中几乎一样,我们只需拷贝Variables表到资源文件中即可,注意资源文件中不可存在*** Test Cases ***测试用例。

rc.robot 资源文件

test.robot 测试套件

变量文件

也可以使用python模块文件提供公共变量给RF使用。只需要直接定义变量就可以了

语法完全就是python 例如:

变量文件声明的时候,可以使用绝对路径,也可以使用相对路径。使用相对路径的时候,RF搜索变量文件规则和搜索资源文件搜索规则一样:

首先在当前文件的目录匹配收缩,如果找不到,就在Python的模块搜索路径中搜索

上面的*** Settings ***变量文件路径是这样写的 Variables ./rf/rc.py

是因为rc.py所处的路径是这样的,如下图

但是这样不好的地方是:

每个RF文件的路径不一样,导致每个RF文件导入变量文件的写法都不同,而且一旦移动了目录,就要修改里面的写法,比如

Variables ./rf/rf/rc.py

一种推荐的做法就是统一相对于项目根目录,假设项目根目录是rf,就需要像下面这样

也可以在命令行参数中直接指定变量文件,就可以不用在RF中声明了

扩展关键字

使用python测试库,模块文件名就是测试库的名字

定义在python模块中的函数,名称前有_前缀的不会作为关键字。

Python模块定义好以后,RF就可以使用它了,我们可以这样使用上面定义的测试库,要注意的是,要保证其在Python模块的搜索路径中,这样RF才能找到它

RF在使用关键字的时候,中间可以加上任意的空格,并且大小写也可以任意

自己定义关键字名字 _hehe不会作为关键字被rf使用

python类作为测试库

tlib2.py

库的搜索规则

RF搜索库完全是按照python的模块的搜索规则来的

如果python库是在一个包中,比如

pylib/login/rightpass.py

声明的时候,可以在RF文件像python导入包里面的模块那样的语法,如下

*** Settings ***

Library pylib/login/rightpasswd.py

如果导入的库中存在模块的引入,引入的模块要以加入pythonpath的路径来写否则会报错

如果存在继承的情况,只要导入子类就可使用父类的方法,要注意模块导入时的路径。

父类

子类

robot用例

总结如下:

1.在settings中声明资源文件和变量文件:

路径,目录之间的分隔符用斜杠 / 而不是点 .

2.在settings中声明测试库:

路径,目录之间的分隔符,可以用点 . 也可以用斜杠 /

路径,目录之间的分隔符用点后面不加py,用斜杠后面加.py

RF 关键字、变量与循环

关键字的使用

RF的能力是由关键字提供的,所以我们必须对RF的常用关键字有个了解,这样才能把RF用好

常用的RF关键字就在RF的标准库中

关键字参数

第一列是关键字的名称

第2列是关键字的参数

常用关键字

set variable 只支持赋值一个字符串给变量,如果我们想赋值一个整数,或者浮点数,需要用Convert To integer Convert To Number

如果我们想把一个数字作为关键字的参数,可以使用数字变量

Should be true 与python两个区别:

1.变量前面加个$符号

2.不能中间有多于两个空格

认识测试库

通常,关键字是由测试哭提供的。其实测试库就是python模块文件。

关键字就是python库里面的函数和类的方法。

RF本事就是python程序,所以它的寻找库文件的原理和python是一样的。最终是通过sys.path

我们在哪个目录下面运行robot,哪个目录就是当前工作目录当前工作目录就是在sys.path里面的。所以我们房子啊当前目录下面的python模块文件,直接就能被找到

RF脚本使用函数名、方法名、大小写不敏感

库的导入

要使用测试哭提供的关键字,我们必须要声明导入库当然一个特例:除了RF的builtin库的关键字,不需要声明。

库的名称在RF里面是大小写敏感的。

有的库,在导入的时候,可以提供参数,比如SeleniumLIbrary

importing 链接,点开,有参数就是导入可以设置的参数

timeout=5.0

run_on_faullure=Capture Page Screenshot

screenshot_root_directory=None

其实这些导入时带参数的库,对应的测试库都是用类实现的

这些参数就是类的初始化方法init里面的参数

变量的用法

RF中的变量,实质上就是一个python变量,他只想一个python对象。

所以RF的变量对应的是什么Python对象,他就是什么类型的对象

循环

RF用:FOR来实现循环,没有while循环

对应的文档解释在这里

:FOR \ 为旧语法 、

FOR END为新语法

range用法

python中,我们常常用到range方法,RF也有类似的支持


文章标题:rf使用python函数的简单介绍
文章来源:http://pwwzsj.com/article/hgdhco.html