一个案例(Test Case)结束,返回执行的状态(status)一般有两种:成功还是失败, PASS/FAIL
一个关键字(Keyword)结束,会同时向调用者返回(执行结果的)状态(status)和值(*return_values)。返回状态是布尔型,返回值是单个变量或者list,他们可以一起被调用者接收。返回状态可以用${status} == [True | true | False | false]判断,比如${status} | ${values} = | Run Keyword And Ignore Error | your_keyword | your_keyword_args。
有些内建关键字以Run Keyword开头,比如Run Keyword, Run Keyword If, Run Keywords, 其返回值原样复制其所运行的关键字的返回值(run keywords则是参数内的最后一个关键字的返回值)。
比如你有个普通关键字可以这样用:${num} = | Get Item Number | ${page}, 加上条件判断则可以这样: ${num}= | Run Keyword If | contition_is_true | Get Item Number | ${page}
如果Run Keyword If 的条件判断为false导致参数内的关键字不被执行,Run Keyword If 的返回值将为空==None(这个类似${var}= Set Variable If 陷阱,如果条件不成立${var}的值会被清空而不是保持原值,所以有条件接收返回值要特别注意这一点),其返回状态status则混合了条件判断和参数内的关键字的返回状态。
下面是这个问题的针对性测试:
如果Run Keyword If 以及同类的关键字作为案例最后的执行关键字,如何判定案例执行结果是成功还是失败呢?官方文档对此只字不提,顶多是提到返回值而不是执行结果。
下面做了个实验,把每行单独放在一个案例中,看案例的执行结果是成功还是失败。
(下面的True或Fase可以加也可以不加单引号,不影响逻辑结果识别)
成功的案例:
Run Keyword If ‘False’ Should Be True${3} == ${3}
Run Keyword If ’False‘ Should Be True${1} == ${3}
Run Keyword If ‘True’ Should Be True${3} == ${3}
失败的案例:
Run Keyword If ’True‘ Should Be True${1} == ${3}
结论:Run Keyword If走到最右边且最后一步失败了,案例算是失败。否则案例全部算成功