目录
目录
一、RF控制流—if判断
RF中,IF语句是用 Run Keyword If 来代替的
1.1 语法
Run KeyWord If 判断条件 其他关键字
... ELSE IF 判断条件 其他关键字
...
... ELSE 判断条件 其他关键字
如果给出的条件满足,就执行给出的关键字
1.2 案例
1.2.1 案例1
*** Test Cases ***
...
# 如果要运行的关键字有返回值,在控制流语句前面接收
${用户余额} Run KeyWord If ${res}==1 用户信息页面-获取用户余额
1.2.2 案例1
*** Settings ***
Force Tags new
*** Test Cases ***
数字比较
@{list1} BuiltIn.Create List 0 10 5
BuiltIn.Run Keyword If ${list1[0]}>${list1[1]} BuiltIn.Log 我赢了
... ELSE BuiltIn.Log 我输了
字符比较
# 字符比较都需要加上双引号或者单引号
&{dict1} BuiltIn.Create Dictionary str1=happy str2=unhappy
BuiltIn.Run Keyword If "${dict1.str1}"=="happy" BuiltIn.Log I am happy!
布尔值比较
# 布尔值比较都需要加上双引号或者单引号
# 注意返回值为None的情况
# 在rf中,布尔值首字母是大写:True、False
${var1} BuiltIn.Set Variable true
${res} BuiltIn.Run Keyword If "${var1}"=="false" BuiltIn.Log pass
BuiltIn.Log ${res}
BuiltIn.Comment 返回值为None的情况
${value} BuiltIn.Set Variable hello
${value} BuiltIn.Set Variable If "true"=="false" hao ${value}
# 在rf中,如果关键字没有设置返回值,那么就会返回None,如果有返回值,所以上面语句中,
# 最后加了一个${value}作为BuiltIn.Set Variable If关键字条件不满足时的返回值,二
# BuiltIn.Set Variable If的语法为,条件满足返回第一个值,不满足返回第二个值
1.3 IF关键字使用案例讲解
实际项目中,可能需要在不同的测试环境(SIT环境、UAT环境以及生产环境)中跑自动化测试脚本。不同 测试环境所需要准备的测试数据可能不一样,所以要做到测试数据的分离。在rf命令行启动过程中,可以通过-v传入全局的参数,可以在用例中在用例执行前判断传入的参数的值,再根据这个值导入不同的资源文件
*** Test Cases ***
BuiltIn.Run Keyword If "${env}"=="SIT" BuiltIn.Import Resource SIT环境测试数据存储资源文件路径
... ELSE IF "${env}"=="SIT" BuiltIn.Import Resource UAT环境测试数据存储资源文件路径
... ELSE IF BuiltIn.Import Resource UAT环境测试数据存储资源文件路径
二、RF控制流—For循环
2.1 单层for循环
2.1.1 语法
第一种语法:
:For 变量 IN 序列(or 列表)
关键字 参数值
Exit for loop if 判断条件
第二种语法:
:For 变量 IN RANGE 循环限量
关键字 参数值
Exit for loop if 判断条件
2.1.2 案例
*** Settings ***
Force Tags A
*** Test Cases ***
从列表或序列中循环取值
[Documentation] 从列表中循环取值
# For IN 从序列或者列表中取值
BuiltIn.Log start
@{myList} BuiltIn.Create List hello world hey
BuiltIn.Comment \表示该for循环的作用域,表示语句是for循环的内容
:FOR ${item} IN @{myList}
\ BuiltIn.Log ${item}
\ # 满足条件的情况下,退出循环
\ BuiltIn.Exit For Loop If "${item}"=="world"
在一个范围内循环取值
[Tags] smoke
BuiltIn.Log 只有一个参数,参数为终止值。默认其实为0,默认为+1
:FOR ${index} IN RANGE 5
\ BuiltIn.Log ${index}
# 设置起始值
BuiltIn.Log 设置起始值。第一个参数为起始值,第二个参数为结束值。默认+1
:FOR ${index} IN RANGE 10 15
\ BuiltIn.Log ${index}
BuiltIn.Log 设置步长。第一个参数为起始值,第二个参数为结束值,第三个参数为步长
:FOR ${index} IN RANGE 10 20 2
\ BuiltIn.Log ${index}
2.2 双层for循环
rf中不支持直接嵌套for循环,如果想要嵌套for循环,需要把内层for循环写成关键字,for写到外面
2.2.1 语法
外层循环:
:For 变量 IN 序列(or 列表)
内层循环关键字 参数值
内层循环关键字:
:For 变量 IN RANGE 循环限量
关键字 参数值
2.2.2 案例
外层for循环:
*** Settings ***
Force Tags A
Default Tags test tt
Resource ../关键字/内层for循环关键字.robot
*** Test Cases ***
双层for循环
BuiltIn.Comment rf中不支持直接嵌套for循环,如果想要嵌套for循环,需要把内层for循环写成关键字,for写到外面
@{rows} BuiltIn.Create List row1 row2 row3 row4
@{cells} BuiltIn.Create List cell1 cell2 cell3
:FOR ${row} IN @{rows}
\ 内层for循环关键字.内层for循环 ${row} @{cells}
内层for循环关键字:
*** Settings ***
Library BuiltIn
*** Keywords ***
内层for循环
[Arguments] ${row} @{cells}
:FOR ${cell} IN @{cells}
\ BuiltIn.Log ${cell}