Robot Framework关键字,变量,循环
关键字的使用
RF的官方文档
-
-
library里面
*** Test Cases ***
测试1
${var} set variable hello #给var赋值变量为hello set variable是关键字
Should Be Equal ${var} helle #比较var和helle是不是相等。*** Test Cases ***
测试1
${var} set variable hello #数字也会转化成字符串
Should Be Equal ${var} helle 变量不是hello #msg缺省是none,添加了msg值,对错误信息可以看的更加清晰结果: 变量不是hello: hello != helle
*** Test Cases ***
测试1
${var} set variable 这是日志里面要记录的内容
Log ${var} #会把变量的值打印到日志里面
常用关键字
-
Import Library #用的比较少,一般是一个case引用一个
-
Should Be Equal #相等
-
Should Contain #包含
扫描二维码关注公众号,回复: 4282391 查看本文章 -
set variable #设置变量
-
log to console #直接打印到控制台的
-
log #打印到log文件
-
sleep #1d 睡一天,1m 睡一分钟,默认是秒,可以不写
-
convert to integer #转化成整型
-
convert to number #转化成浮点型整数
*** Test Cases ***
验证
${num}= convert to integer 32 #把32转化成整形 结果32
log to console ${num}
${num2}= convert to Number 32 #把32转化成浮点型 结果32.0
log to console ${num2}
log to console ${32} #用数字变量。可以直接转化成数字整型 结果32
log to console ${32+4*6} #也可以像py里面的数字表达式 结果56
*** Test Cases ***
测试1
Should Be Equal 10 010 #字符串对象比较,结果是False
Should Be Equal As Integers 10 010 #转换成数字对象比较,结果是true。传给关键字的时候,是字符串。在关键字内部转成整数的
rf里面的should be true关键字,会传递给py里面的eval()函数比较。
eval(“4+8”) #结果12 eval()更智能的识别表达式
验证 should be true
*** Test Cases ***
验证
${num}= convert to integer 20 #把20转化为一个整型
should be true ${num}>19 #等价于python里面eval("20>19") ${num}本身是整型,后面>19又会变成字符串。should be true会把它转化成eval函数:eval("20>19")是ture。传递给should be true的是"20>19",相当于eval("20>19")是ture。
验证 should be true
*** Test Cases ***
验证
${str1}= set variable hello #设置变量,rf里面的字符串是不需要加“”的
should be true ${str1}==hello #NameError: name 'hello' is not defined。${str1}的内容是hello,hello == hello,交给should be true的时候就是调用python里面的eval()函数。相当于eval(“hello == hello”) python里面也会报错。name 'hello' is not defined。hello是当做变量的
验证 should be true
*** Test Cases ***
验证
${str1}= set variable hello
should be true '${str1}'=='hello' #'${str1}'是把变量里面的值取出来,然后“”变成str类型。然后两个字符串相比。eval(“"hello "== "hello"”) 结果pass
验证 should be true
*** Test Cases ***
验证
${str1}= set variable hello
should be true $str1=='hello' #结果pass,这种方式是直接引用变量,$str1是变量名,比如a。$str1[2],或$str1[“key”]和python一样,列表和字典用法
# str1取的变量的值
**
认识测试库
**
通常,关键字是由测试库提供的
测试库就是python模块文件
python测试库里面的关键字实现方式
-
类的方法
-
函数
-
RF脚本使用函数名,方法名,大小写不敏感
RF如何发现库的路径的
- 和python程序一致,sys.path
有参数的关键字,传参的方法
*** Settings ***
Library mylib3
*** Test Cases ***
测试
${var1} set variable 123 #通过关键字设置变量123
printarg ${var1} #printarg是在mylib3里面定义的函数,${var1}是传的字符串。直接在关注简直后面填参数就行了
${var2} convert to integer 123 #通过关键字转化成整型123
printarg ${var2} #这里传了一个整型的参数
${var2} convert to integer 23 #通过关键字转化成整型123
printarg ${var2} hello #这里传了一个整型的参数和一个字符串的参数
库的导入
-
除了builtin库,无需导入声明 #类似于python中的内置库,无需导入申明就可以使用
-
其他库必须要声明导入 #在RF中导入库的时候,库的名字是大小写敏感的
-
库的导入方式
在用例中使用关键字import library导入 在settings表中声明导入
RF中的变量
RF中的变量,实际上就是一个Python变量
它指向一个python对象
RF变量对应的是什么Python对象,就是什么类型的对象
RF中,对变量有什么不用的用法
Scalar方式(最常用的)
${var} #以$符{}加变量名字定义的变量,传递给关键字作为参数使用的时候,就是直接把这个变量所对应的python对象传递给关键字的函数。是数字就是传数字,是字符串就传字符串,列表就是列表,字典就是字典
直接把变量所对应的Python对象传递给关键字 对应的函数
List方式
@{var}
展开的List中的每个元素,作为多个参数传入
Dictionary方式
&{var}
展开的Dict中的每个元素,作为多个参数传入
访问环境变量 %{env_var}
*** Settings ***
Library mylib3
*** Test Cases ***
验证
Printarg %{path} #打印path环境变量
解释Scalar方式:
#验证Scalar方式传进去的是什么,就是什么
#模块mylib3中的函数,下面rf中调用
#def returnlist():
# return [1,2,3]
#
#def returndict():
# return {
# 'ele1' : 'male',
# 'ele2' : 'female'
# }
验证Scalar方式传进去的是列表,就是列表
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returnlist
Printarg ${var1} #传递给Printarg关键字的参数就是[1,2,3]
验证Scalar方式传进去的是字典,就是字典
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returndict
Printarg ${var1} ##传递给Printarg关键字的参数就是{ 'ele1' : 'male','ele2' : 'female'}
验证Scalar方式传进去的是组合的字符,就是字符串
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returnlist
Printarg 54${var1} #如果这样传。传递给Printarg关键字的参数54[1,2,3],是字符串
List方式(@{var})
展开的List中的每个元素,作为多个参数传入
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returnlist
Printarg @{var1} #如果这样传。传递给Printarg关键字的参数分别是1,2,3 是三个参数。
展开的List中的每个元素,作为多个参数传入。也可以像py一样取值
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returnlist #定义的时候一般写${var1},关键看传参的时候这么传
Printarg @{var1}[1] #如果这样传。传递给Printarg关键字的参数是第二个元素2
Dictionary方式
展开的Dict中的每个元素,作为多个参数传入
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returndict
Printarg &{var1} ##传递给Printarg关键字的参数就是'ele1' : 'male'和'ele2' : 'female'这两个参数
展开的Dict中的每个元素,作为多个参数传入,也可以通过键取值
*** Settings ***
Library mylib3
*** Test Cases ***
验证
${var1}= returndict
Printarg &{var1}[ele1] ##传递给Printarg关键字的参数就是'male'
**
RF用:FOR来实现循环
**
遍历List变量
IN RANGE的用法
一个检查学科的例子
经典方法
evaluate方法
*** Settings ***
Library mylib3
*** Test Cases ***
Example 1
:FOR ${animal} IN 猫 狗 猪
\ Log To Console ${animal}
\ Log To Console 第二行
Log To Console 循环外面
#结果:
猫
第二行
狗
第二行
猪
第二行
循环外面
*** Settings ***
Library mylib3
*** Test Cases ***
遍历list变量
${list}= returnlist
:FOR ${index} IN @{list} #这里用的是@{list}等价于1,2,3
\ Log To Console ${index}
#结果:
1
2
3
要循环固定的次数要range()
*** Settings ***
Library mylib3
*** Test Cases ***
range用法
:FOR ${index} IN RANGE 0 10 #这里range和py中的一样,可以直接写10,也可以0 10
\ Log To Console ${index}
#结果:
0
1
2
3
4
5
6
7
8
9