作者:科雷软件测试
前言
RobotFramework框架中我们之前合集的文章学习了如何使用内置库/编写用例/编写关键字/编写resource文件/执行用例等功能,本次主要给大家展示下RF框架下各类变量的使用方式。
学习目录
1、testsuite中定义变量
1.1 在testsuite中定义常量变量
1.2 在testsuite中定义List变量
1.3 在testsuite中定义Dict变量
2. 在测试案例或者keyword中定义常量变量、List变量、Dict变量
3. 变量作用域
4. 导入变量文件
5.执行用例时使用变量或者变量文件
5.1 执行用例语句中使用变量
5.2在执行用例中使用变量文件
1、testsuite中定义变量
1.1 在testsuite中定义常量变量
选择‘Add Scalar’,在弹出的对话框中,定义比如ip地址和端口变量
定义后如下,变量名称前面的符号为$。
在测试套件下创建的测试用例都可以引用上面定义的变量
用例执行后,正常打印变量值
1.2 在testsuite中定义List变量
选择‘Add List’,创建列表变量,比如定义多个端口列表
定义之后如下所示,变量名称前面的符号为@。
在测试用例中循环打印List变量
用例执行结果如下
1.3 在testsuite中定义Dict变量
选择‘Add Dict’,创建字典变量,比如定义多个IP地址和端口的字典
定义之后如下所示,变量名称前面的符号为&。
在测试用例中循环打印Dict变量值
用例执行结果如下
Tips:RF使用熟练后,可在文本文件中直接编辑如上变量,文件如下:
2. 在测试案例或者keyword中定义常量变量、List变量、Dict变量
常用到的关键字如下:更详细的描述请跳转内置库BuiltIn介绍
- 使用Set Variable定义普通变量
- 使用Create List 定义List变量
- 使用Create Dictionary定义Dict变量
如上关键字是RF中默认BuiltIn中的常用关键字,可执行F5查看其他关键字用法。
3. 变量作用域
- testcase里的变量,作用域在testcase内部。
- userkeyword里的变量,作用域在userkeyword内部。
- 文件型suite里的变量,作用域在suite内部,所有下级case都可以使用。
- 目录型suite里的变量,作用域在目录内,但是它下级文件型suite是无法使用的,所以一般不在目录下新增变量。
变量的作用域是可以改变的,通过一些关键字的处理,对变量进行作用域的改变,常用的关键字有:
- Set Global Variable为设定全局变量。当执行过这个设置后,这个变量在所有testcase和testsuite中都有效
- Set Suite Variable为设定File Suite级变量。当执行过这个设置后,这个变量在当前的File Suite内都有效
- Set Test Variable为设定Case级变量。当执行过这个设置后,这个变量在当前的Test Case内有效
4. 导入变量文件
1、创建一个.py文件,在文件中定义变量。举例:创建ip_port.py,变量设置如下:
#定义变量
ip_addr = '192.168.1.2'
port = 9090
port_list = [9090,2002,4005]
ip_port_dict={'ip_port_1':'192.168.1.2:9090','ip_port_2':'192.168.2.3:9091'}
2、在testsuite或者keyword、或者resource中导入变量文件。
3、 在测试用例中使用变量文件中的变量(如果导入多个变量文件,注意变量名称不要重复)
4、执行用例成功,结果如下:
5.执行用例时使用变量或者变量文件
5.1 执行用例语句中使用变量
1、在testcase中打印变量${ip_addr_enter},该变量没有事先定义。
2、再行执行用例中定义变量,添加-v参数,并执行,结果如下:
5.2在执行用例语句中使用变量文件
1、在project目录下创建config文件夹存放变量文件ip_port.py,文件中定义变量ip_addr_enter
ip_addr_enter = ‘192.168.1.2:9090’
2、执行用例时添加--variablefile参数,使用变量文件
总结:在RF中有多种定义变量、使用变量的方法,可以根据项目大小,个人喜好等灵活使用
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。