RobotFramework 之 Evaluate
在RF中,语法不如python来的直接,就比如python要生成一个列表,列表中包含0~9,直接用列表生成式
[x for x in range(10)]
所以在RF中要实现一些功能,可能需要通过自定义关键字的方式来实现,不怎么便捷
RF中也可以执行python代码,比如前面都用到的python条件表达式,虽然作用是进行判断
其实在RF中通过Evaluate
关键字来执行python代码
*** Test Cases ***
表达式
${res} evaluate [x for x in range(10)]
log to console ${res}
这里就是通过Evaluate
关键字获取列表生成式 [x for x in range(10)]
的内容,将其传递给变量${res}
但python严格按照缩进来执行代码,所以在RF中使用Evaluate只能够执行一行python代码。如果有多行,还是推荐写成python模块,然后再进行引用
Evaluate
关键字本质是python中的 eval
函数
在python中, eval
函数的作用就是执行表达式里的内容
比如
eval("print('hello rf')")
# 执行结果
hello rf
# 相当于执行了字符串里的print函数
RF中传递过来的参数,基本都是以字符串的方式传递的
注意: eval
函数不支持赋值操作
*** Test Cases ***
表达式
${dict} create dictionary a=1 b=2 c=3
log to console ${dict}
evaluate $dict['c']=123
log to console ${dict}
运行该robot文件,会报错
如果需要更新值,只能采用python里更新值的方式,比如这里字典更新值
*** Test Cases ***
表达式
${dict} create dictionary a=1 b=2 c=3
log to console ${dict}
evaluate $dict.update({'c':123})
log to console ${dict}
不建议用Evaluate
运行复杂的代码,复杂的内容,还是推荐写成python模块,然后再进行引用