当前位置:网站首页>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 ifexit for loop关键字的结合
continue for loop if 关键字相当于 run keyword ifcontinue for loop关键字的结合

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

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

原网站

版权声明
本文为[沉觞流年]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44614026/article/details/115288508