RobotFramework 之 条件判断

本文详细介绍了RobotFramework中的条件判断,包括if条件、else分支、elseif条件以及嵌套条件。同时,讲解了for循环的使用,如如何判断、跳出和继续循环,并展示了如何通过自定义关键字模拟while循环。此外,还演示了如何在循环中根据用户输入跳出或继续循环。
摘要由CSDN通过智能技术生成

条件判断

条件判断-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 ifexit for loop关键字的结合
continue for loop if 关键字相当于 run keyword ifcontinue for loop关键字的结合

如果后面接的python条件表达式成立,就执行

类似的还有 set variable if,意思是如果后面接的python条件表达式成立,就给其赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值