关键字的使用
RF的能力是由关键字提供的,所以我们必须对RF的常用关键字有个了解,这样才能把RF用好
常用的RF关键字就在RF的标准库中
http://robotframework.org
其中Builitin是标准库中的内置库
Shortcuts Keywords就是关键字目录表,具体介绍每个关键字
关键字参数
第一列是关键字的名称
第2列是关键字的参数
常用关键字
- Should Be Equal
- Should Contain
- set variable
- log
- log to console
- sleep
- Convert To Integer
- Convert To Number
set variable 只支持赋值一个字符串给变量,如果我们想赋值一个整数,或者浮点数,需要用Convert To integer Convert To Number
如果我们想把一个数字作为关键字的参数,可以使用数字变量
- log to console ${32}
- log to console ${32+4*6}
- Should Be Equal/Should Not Be Equal
- Should Contain/Should Not Contain
- Should Start With/Should Not Start With
- Should End With/Should Not End With
-
一个特殊的关键字Should Be True
他的参数本身是python表达式语句,RF会直接用python解释器的eval函数,来解释这个参数表达式。
Should be true 与python两个区别:
1.变量前面加个$符号
2.不能中间有多于两个空格
认识测试库
通常,关键字是由测试哭提供的。其实测试库就是python模块文件。
关键字就是python库里面的函数和类的方法。
RF本事就是python程序,所以它的寻找库文件的原理和python是一样的。最终是通过sys.path
我们在哪个目录下面运行robot,哪个目录就是当前工作目录当前工作目录就是在sys.path里面的。所以我们房子啊当前目录下面的python模块文件,直接就能被找到
RF脚本使用函数名、方法名、大小写不敏感
库的导入
要使用测试哭提供的关键字,我们必须要声明导入库当然一个特例:除了RF的builtin库的关键字,不需要声明。
库的名称在RF里面是大小写敏感的。
有的库,在导入的时候,可以提供参数,比如SeleniumLIbrary
http://fobotframework.org/SeleniumLibrary/SeleniumLibrary.html
importing 链接,点开,有参数就是导入可以设置的参数
timeout=5.0
run_on_faullure=Capture Page Screenshot
screenshot_root_directory=None
其实这些导入时带参数的库,对应的测试库都是用类实现的
这些参数就是类的初始化方法init里面的参数
变量的用法
RF中的变量,实质上就是一个python变量,他只想一个python对象。
所以RF的变量对应的是什么Python对象,他就是什么类型的对象
- Scalar方式(Scalar Variable)
putting用法,就是用${var}的方式来表示
特点:当我们把变量以scalar方式传递给关键字作为参数的时候,就是直接把它对应的python对象传递给关键字对应的函数 - List (List Variable)
如果RF变量实际指向一个python list对象
我们还可以把它以list方式传递给关键字作为参数
List方式使用@{var}的方式来表示,也把这种方式表示的变量叫做list变量
List方式,实际上会展开其List中的每个元素,作为多个参数传入 - Dictionary方式(Dictionary Variable)
如果RF变量实际指向一个PythonDict对象,我们还可以把它以dict方式传递给关键字作为参数,Dictionary方式使用&{var}的方式来表示 ,也罢这种方式表示的变量叫做Dictionary变量。dictionary方式,实际上会展开其Dict中的每个元素,作为多个参数传入。 - 访问环境变量
RF中可以用%{env_var} 方式直接访问一个环境变量比如
printarg %{path}
循环
RF用:FOR来实现循环,没有while循环
对应的文档解释在这里
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#for-loops
:FOR \ 为旧语法 、
FOR END为新语法
${list} create list a b c d
:FOR ${one} in @{list}
\ log to console ${one}
\ log to console -----------
log to console 循环外
#使用$符号会把列表当成一个整体所以要写@
FOR ${one} in @{list}
log to console ${one}
log to console ------------------
END
log to console 循环外面
#切记in range 空一个空格否则会当成字符串打印
FOR ${i} in range 10
log to console ${i}
END
- 旧语法:FOR冒号不能忘了
- 如果后面的变量是个list一定要写成@的形式,而不是$的形式
- for循环体内的语句,要锁进一个单元格,如果是纯文本文件,连续的空格是无法表示多个单元格的,RF会只当成一个,所以前面还要有一个反斜杠转义,表示这边有一个空的单元格
range用法
python中,我们常常用到range方法,RF也有类似的支持
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#id578
FOR ${i} IN RANGE 99
${score} get value from user 请输入成绩
run keyword if $score == 'count' continue for loop
continue for loop if $score == 'count'
exit for loop if $score == 'over'
run keyword if int(${score}) >=60 log to console 及格了
... log to console 123
... ELSE log to console 不及格
END
网友评论