看过很多贴子,没有找到可以在if条件判断后,执行if分支中的关键字,然后需要获取关键字的执行返回值,再供后续接口使用的情况,所以对自己的处理方式进简单记录;
主要内容:run keyword if 条件判断后,获取分支中关键字的返回值,供后续的接口调用使用(作为后续接口的参数);
run keyword if 是RobotFramework对多分支条件判断的处理,一般情况下的使用是:
1、run keyword if +条件 log XXX;
2、Run Keyword If 1==1 Run Keywords log 1 AND log 2 ;
3、Run Keyword If '${B_name}'=='${B}' and '${C}'== '0' ;
4、Run Keyword If '${rspMessage}'=='成功'
... 关键字
解释:如果'${rspMessage}'=='成功',那么执行关键字;
然后有这样一种场景:
我想要获取if分支中执行关键字结果的返回值,或想获取返回内容中的某个字段信息该如何完成呢?
按照通常的写法应该是(解释一下:Get Result Expect是自己封装的关键字,大家更换为自己想要执行的关键字即可):
Run Keyword If '${qury_except_messsage}'=='成功'
... ${contractId} Get Result Expect ${card_response} contractId
解释:if '${qury_except_messsage}'=='成功',执行关键字Get Result Expect,然后获取返回内容${card_response}中的字段contractId,再赋值给变量 ${contractId},
问题:报错${contractId}未被定义,很显然这样的写法是不正确的,也就是说在上面这个语法是错误的,Run Keyword If不支持这种获取返回字段信息的方式;
经过试验调试,正确的写法:
${contractId} Run Keyword If '${qury_except_messsage}'=='成功'
... Get Result Expect ${card_response} contractId
Bind Card ${contractId}
解释: Get Result Expect关键字的返回值${contractId} ,在关键字 Bind Card中被作为参数引用。
大家看出和上面写法的不同了吗?是的,变量${contractId}的位置,这样,获取if分支中执行关键字的返回值的问题就解决了。
欢迎大家指评!!