本篇将对RF扩展关键字进行展开讲解,包括“python模块作为测试库使用,python类作为测试库以及python库的搜索规则”。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
01:本节内容介绍
02:python模块作为测试库
1)概述:python模块(python文件)作为测试库,本质就是python函数
- 模块文件名作为测试库的名字
- 比如python模块叫MyLibrary,对应的python文件是MyLibrary.py。那么测试库名字就是MyLibrary
- 定义在python模块中的函数,名称前有
_
前缀的不会作为关键字(在python中带下划线的函数一般默认为私有函数,不对外公开)- 使用关键字的时候,中间可以加上任意的空格但不能超过2个,关键字不区分大小写
#python模块代码如下 def returnlist(): return _returnlist2() def _returnlist2(): return [1,2]
2)RF引入python模块(要保证在Python模块搜索路径中,这样 RF才能找到它)引用方法与python变量一致
*** Settings *** Library mylib2
3)RF使用扩展关键字
*** Test Cases *** case01 ${a} returnlist log to console ${a} case02 ${a} _returnlist2 log to console ${a} 运行结果如下: case01 | PASS | -------------------------------------------------------------------- case02 | FAIL | No keyword with name '_returnlist2' found. Did you mean: mylib2.Returnlist --------------------------------------------------------------------
03:自定义关键字名称
1)概述:改变函数名,可以给关键字换个名字
2)方法:导入Robot API下面的装饰器 keyword
3)装饰器代码如下:
from robot.api.deco import keyword @keyword('Hi') def returnlist(): return [1,2]
4)RF导入模块并使用扩展关键字
*** Settings *** Library mylib2 case03 ${a} Hi log to console ${a} 运行结果如下: -------------------------------------------------------------------- case03 | PASS | --------------------------------------------------------------------
04:Python类作为测试库
1)概述:把python类名作为RF测试库的名字
- 名称前有
_
前缀的不会作为关键字- 若类中初始化方法有必填参数,导入时需要传入参数
- 若类名和模块名相同,导入时可以省略类名
2)比如python模块叫mylib2,对应的 python文件是mylib2.py。这个模块文件中有个类名字叫SubLibrary
class SubLibrary(): def __init__(self,a,b): self.a = a self.b = b def returnint(self): return 3
3)RF导入有参数的类并使用扩展关键字
*** Settings *** #类中初始化方法有必填参数,导入时需要传入参数 Library mylib2.SubLibrary 1 2 case04 ${a} Hi log to console ${a}
4)RF导入文件名和类名相同的类
*** Settings *** Library SubLibrary
05:python扩展库搜索规则
1)规则:完全是按照python的模块搜索规则来的
2)模块法:
mylib2.SubLibrary
*** Settings *** Library mylib2.SubLibrary
3)路径法:
pylib/mylib2.py
*** Settings *** Library pylib/mylib2.py
4)规则总结如下:
- 在setting中申明
资源文件和变量文件
:路径,目录之间的分隔符,不用“·”而是用“/”- 在setting中申明
测试库
:
- 路径,目录之间的分隔符,可以用“·”也可以用“/”
- 路径分隔符用“·”后面不加py,用“/”后面加py
- 建议项目根目录作为模块搜索路径