1、函数定义
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了闻喜免费建站欢迎大家使用!
①使用def关键字定义函数
②
def 函数名(参数1.参数2.参数3...):
"""文档字符串,docstring,用来说明函数的作用"""
#函数体
return 表达式
注释的作用:说明函数是做什么的,函数有什么功能。
③遇到冒号要缩进,冒号后面所有的缩进的代码块构成了函数体,描述了函数是做什么的,即函数的功能是什么。Python函数的本质与数学中的函数的本质是一致的。
2、函数调用
①函数必须先定义,才能调用,否则会报错。
②无参数时函数的调用:函数名(),有参数时函数的调用:函数名(参数1.参数2.……)
③不要在定义函数的时候在函数体里面调用本身,否则会出不来,陷入循环调用。
④函数需要调用函数体才会被执行,单纯的只是定义函数是不会被执行的。
⑤Debug工具中Step into进入到调用的函数里,Step Into My Code进入到调用的模块里函数。
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
如果是命令行的,一般是捕获ctrl-c事件吧。importsignalimportsysdefsignal_handler(signal,frame):print('YoupressedCtrl+C!')sys.exit(0)signal.signal(signal.SIGINT,signal_handler)print('PressCtrl+C')signal.pause()