RobotFramework条件判断
Run Keyword If
RF ⾥⾯除了循环以外,另⼀个流程控制的基本功能就是条件判断,RF 中通常⽤ Run Keyword If 关键字来达到类似 Python 中 if…else… 条件判断的功能,我们打开官⽅⽂档看⼀下:
第⼀列是关键字的名字,第⼆列是关键字的参数,他有三个参数 condition, name, *args
image.png
我们来看⼀下它的说明 Runs the given keyword with the given arguments, if condition is true. 如果 condition 为真的话,那么就执⾏
image.png
这⾥given 就是 name 代表的 keyword with, *args就是关键字的参数,就是 name 对应的参数,如果 condition 为 True 的话。
接下来看下 condition 是怎么定义的。
image.png
这句话它说 condition 是 python 的表达式(之前我们学的 should Be True 也是),name 是⼀个关键字 就是条件满⾜的时候要执⾏的关键字,并且只能执⾏⼀个关键字
eval是做什么的我们来看个例⼦:
image.png 因为 '2018' in $html 是为 True 的,就打印 2018 年的 UTC 时间。
讲⼀个注意点:
image.png
这⾥路径不需要设置因为这⾥我们把 mylib4.py 和 s1.robot 放在同级⽬录下⾯的,同级⽬录下 robot 去的路径跟 python ⼀样,先在当前执⾏的 s1.robot 路径下去,如果到了就⽤,如果不到就去 site-packages 下⾯去,这⾥因为是同级⽬录所以直接写没有什么问题,如果不到就在前⾯加上 --pythonpath . 把它设置为你当前的路径,这种情况下的话⾸先要 cd 到当前执⾏的路径下⾯。
image.png
如果不⾏的话要加上 --pythonpath .。
image.png
我们再考虑个问题如果条件判断再复杂⼀点如果有多个条件,⽐如说我除了包含2018还要包含UTC都满⾜我再打印log,这个时候该怎么写⼤家想⼀下,这个 condition 有两个判断条件,既然中间的 condition 是⼀个 python 表达式,那就很简单了加个 and 就⾏了。
image.png
他是可以独⽴存在的,不像 python 的 if else 是嵌套在⼀起的。⼤家要理解⼀下,它是⼀个全新的语句,正因为他们可以单独使⽤所以条件还要在写⼀遍。
image.png
。
⼤家看下 run keyword if 要加上条件,条件满⾜的满⾜的话执⾏下⾯的关键字 Log to console ,run keyword unless 就是不满⾜的时候才去执⾏ Log to console 所以他跟上⾯没有关联所以条件要再写⼀遍,因为可以独⽴存在单独执⾏是没有问题的,从这个语法上就看到了这两个keyword 放在⼀起,这样实现 if else 的功能是不是有点复杂啰嗦,要把条件写两遍才能达到需求。所以 Robot Framework 从 2.7.4 以后他也⽀持 else 的分⽀了,他的语法写反就可以了,如果 unless 想改成 run keyword if 就是:
image.png
其实是⼀样的,语法写反完全可以达到需求的,只是 Robot 是相对弱的语法,所以它⾥⾯搞了很多看起来有点相近的关键字去实现不同的功能,⼤家理解⼀下。
在新的2.7.4以后的 robot 他就有了 ELSE 分⽀,因为他也发现⽤起来⽐较不舒服,写起来有点重复,所以它也⽀持了 ELSE 及 ELSE IF 这种分⽀,格式就是另外起⼀⾏前⾯加省略号就是换⾏的意思。
image.png
这个他们就是放在⼀起的作为 run keyword if 的⼀些参数放在⾥⾯这些 ELSE IF ,
这样写就不需要把条件再写⼀遍了,⼤家注意这⾥的 ELSE 本⾝就不是⼀个关键字他是run keyword if这⾥⾯参数的⼀部分,所以第⼀他们前⾯要有省略号,第⼆ELSE IF⼀定要全部⼤写的,例⼦:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论