当前位置:网站首页>RobotFramework 之 条件判断
RobotFramework 之 条件判断
2022-08-09 13:06:00 【沉觞流年】
条件判断
条件判断-if
RF中用 run keyword if 关键字做条件判断
语法:
run keyword if + python条件表达式 + 关键字 + 关键字所需参数
注意, python条件表达式 中如果出现空格,空格不能超过1个,否则就会判定为RF的语法内容,而非 python条件表达式
举例说明:
*** Test Cases ***
条件判断1
run keyword if 1>0 log to console 判断正确
结果:
==============================================================================
Test8
==============================================================================
条件判断1 判断正确
条件判断1 | PASS |
------------------------------------------------------------------------------
Test8 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
这个 python条件表达式 作为参数给python的 eval 函数,如果 python条件表达式 成立,则执行后面的语句,如果不成立,虽然用例执行通过,但不会执行后面的内容
*** Test Cases ***
条件判断1
run keyword if 1<0 log to console 判断正确
结果:
==============================================================================
Test8
==============================================================================
条件判断1 | PASS |
------------------------------------------------------------------------------
Test8 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
可以发现,log to console的内容并没有执行
如果 python条件表达式 中的内容过长,可以将 关键字 + 关键字所需参数内容放到下一行,使用三个点作为换行标识符进行区分
*** Test Cases ***
条件判断2
${
var} set variable hello RF
run keyword if 'hello' in $var or 'RF' in $var
... log to console 判断正确
注意:因为是在python表达式中,所以$var没有加上大括号
条件判断-else分支
else
语法:
run keyword if + python条件表达式 + 关键字 + 关键字所需参数
... ELSE + 关键字 + 关键字所需参数
举例:
*** Test Cases ***
条件判断3
${
var} set variable hello RF
run keyword if 'hello' in $var and 'rf' in $var log to console 判断正确
... ELSE log to console 判断错误
结果:
==============================================================================
条件判断3 .判断错误
条件判断3 | PASS |
------------------------------------------------------------------------------
Test8 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
else if
语法:
run keyword if + python条件表达式 + 关键字 + 关键字所需参数
... ELSE IF + 关键字 + 关键字所需参数
... ELSE + 关键字 + 关键字所需参数
这里 ELSE放在最后的条件语句中,如果所有条件分支都不执行,则执行 ELSE所在的条件语句
举例:
*** Test Cases ***
条件判断4
${
var} set variable hello RF
run keyword if 'hello' not in $var log to console hello判断错误
... ELSE IF 'RF' not in $var log to console RF判断错误
... ELSE log to console 判断错误
结果:
==============================================================================
条件判断4 .判断错误
条件判断4 | PASS |
------------------------------------------------------------------------------
Test8 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
条件判断-嵌套
语法:
run keyword if + python条件表达式
... run keyword if + python条件表达式
... run keyword if + python条件表达式 + 关键字 + 关键字所需参数
举例:
*** Test Cases ***
条件判断5
${
var} set variable hello RF
run keyword if 'hello' not in $var
... run keyword if 'RF' not in $var
... run keyword if 'hello' in $var and 'RF' in $var log to console 判断正确
只有三个条件都满足,才会打印 判断正确
结果:
==============================================================================
条件判断5 .判断正确
条件判断5 | PASS |
------------------------------------------------------------------------------
Test8 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
在RF中不推荐使用嵌套判断,如果需要使用,可以通过定义用户关键字方式实现
for循环判断
for循环
语法:
For 变量 IN 序列(or 列表)
关键字 参数值
Exit for loop if 判断条件
For 变量 IN RANGE 循环限量
关键字 参数值
Exit for loop if 判断条件
在RF中没有 while循环,如果需要用到while循环去判断某个条件为真的时候,可以采用足够大的 For循环去模拟while循环,达到这样一个效果
自定义关键字方法,不断输入学生分数判断成绩等级
testlib.py
from robot.api import logger
# 范围0~100,小于60继续努力,60及格,90优秀
def check_score(score):
if int(score)<0 or int(score)>100:
raise Exception('请输入正确的分数范围,0~100')
elif int(score)<60:
logger.console('继续努力')
elif 60 <=int(score)<90:
logger.console('及格')
elif 90<=int(score)<100:
logger.console('优秀')
else:
logger.console('天才')
这里需要用到一个库:Dialogs,里面有一个关键字get value from user,相当于python中的input函数
test.robot
*** Settings ***
Library testlib.py
Library Dialogs
*** Test Cases ***
FOR循环判断
FOR ${
test} IN RANGE 9999
${
score} get value from user 请输入分数
check score ${
score}
END
输入命令运行该robot文件,会弹出一个弹框,在弹框中输入内容
在弹框中输入0~100的数,均能在控制台打印出对应的内容。弹框会一直存在,因为循环次数足够大
但是,如果输入101或者其他超过这个范围的数,就会抛出异常,弹框消失,直接终止
可以将这行代码改一下,不抛出异常,而是在控制台提示,弹框就不会消失
if int(score)<0 or int(score)>100:
raise Exception('请输入正确的分数范围,0~100')
# 改为
if int(score)<0 or int(score)>100:
logger.console('请输入正确的分数范围,0~100')
跳出循环与继续循环
这时候如果不想在循环了,分数都输入完了,想要输入了某个内容,退出循环,就需要用到 Exit for loop关键字,相当于python中的 break
只需要在 robot文件中加个条件判断就行了
test.robot
*** Settings ***
Library testlib.py
Library Dialogs
*** Test Cases ***
FOR循环判断
FOR ${
test} IN RANGE 9999
${
score} get value from user 请输入分数
# 如果输入exit就退出
run keyword if $score == 'exit' exit for loop
check score ${
score}
END
在弹框中输入 exit,就会执行跳出循环的操作,不再展示弹框了,而且用例也不会报错
既然有跳出循环,那么也有继续循环
test.robot
*** Settings ***
Library testlib.py
Library Dialogs
*** Test Cases ***
FOR循环判断
FOR ${
test} IN RANGE 9999
${
score} get value from user 请输入分数
# 如果输入exit就退出
run keyword if $score == 'exit' exit for loop
# 如果输入continue就继续循环
run keyword if $score == 'exit' continue for loop
check score ${
score}
END
这样写只是为了展示效果,将robot文件中内容修改成上面说到的语法
test.robot
*** Settings ***
Library testlib.py
Library Dialogs
*** Test Cases ***
FOR循环判断
FOR ${
test} IN RANGE 9999
${
score} get value from user 请输入分数
# 如果输入exit就退出
exit for loop if $score == 'exit'
# 如果输入continue就继续循环
continue for loop if $score == 'exit'
check score ${
score}
END
exit for loop if 关键字其实就相当于 run keyword if 与 exit for loop关键字的结合continue for loop if 关键字相当于 run keyword if 与 continue for loop关键字的结合
如果后面接的python条件表达式成立,就执行
类似的还有 set variable if,意思是如果后面接的python条件表达式成立,就给其赋值
边栏推荐
猜你喜欢

程序员的七夕怎么过?不会是写代码吧

微服务+微信小程序实现社区服务

How to solve the 0x80070005 error when the computer is reinstalled and the system is restored

Jenkins API groovy calling practice: Jenkins Core Api & Job DSL to create a project

render解析

面试攻略系列(四)-- 你不知道的大厂面试

剑指offer,剪绳子2

GIN file upload and return

客户端连接rtsp的步骤

5G Unicom Network Management Design Ideas
随机推荐
NC7 买卖股票的最好时机(一)
gin's middleware and routing grouping
Q_07 词汇表
面试攻略系列(四)-- 你不知道的大厂面试
RTSP协议的实现
Rmarkdown教程
缓存和数据库一致性问题
jenkins api create custom pipeline
陈强教授《机器学习及R应用》课程 第十七章作业
Q_04_05 使用Qubits
JS轮播图实现
微服务+微信小程序实现社区服务
How to reduce the size of desktop icons after the computer is reinstalled
[FPGA Tutorial Case 48] Image Case 8 - Realization of Converting RGB Image to HSV Image Based on FPGA, Assisted Verification by MATLAB
程序员的七夕怎么过?不会是写代码吧
5G China unicom general exception handling
音视频录入的pts和dts问题
Periodic sharing of Alibaba Da Tao system model governance
43. The sword refers to Offer 1 ~ 1 the number of occurrences of n integers (recursive, mathematics)
Clock frequency and baud rate count for serial communication in FPGA