我目前正在使用Robot Framework自动执行表单测试。为了提供表单数据,我使用了类似以下的字典:

*** Variables ***
&{TestCase1}    key1=a    key2=b    key3=c    key4=d
&{TestCase2}    key2=x    key3=y


我要尝试做的是在该测试用例的字典中是否存在匹配键的情况下填充某些字段,以便可以将可选字段保留为空白。我尝试运行以下关键字:

*** Keywords ***
Fill Form
    [Arguments]    &{TestCase}
    Run Keyword If    &{TestCase}[key1]    Input Text    id=field1    &{TestCase}[key1]
    Run Keyword If    &{TestCase}[key2]    Input Text    id=field2    &{TestCase}[key2]
    Run Keyword If    &{TestCase}[key3]    Input Text    id=field3    &{TestCase}[key3]
    Run Keyword If    &{TestCase}[key4]    Input Text    id=field4    &{TestCase}[key4]


...但无济于事。我收到此错误:

FAIL: Dictionary &{TestCase} has no key 'key1'.


...在某种程度上是有意义的,因为它没有意义,但这就是重点。我希望这会使条件评估为False,并使RF跳过关键字。

谁能解释为什么它不能那样工作以及是否有另一种方法可以做到这一点?任何帮助是极大的赞赏!

最佳答案

您需要检查键的存在,而不是值。在python中,它看起来像if 'key1' in TestCase,所以在机器人语法中,它看起来像这样:

Run keyword if  'key1' in $TestCase  Input Text  ...


这是一个完整的例子。运行时,它应添加“ key1如预期的那样在日志中”,而不是“伪造的意外在日志中”

*** Variables ***
&{TestCase1}    key1=a    key2=b    key3=c    key4=d
&{TestCase2}    key2=x    key3=y

*** Test Cases ***
Example
    Run keyword if  'key1'  in $TestCase1  log  key1 is in the log as expected
    Run keyword if  'bogus' in $TestCase1  log  bogus is unexpectedly in the log

07-24 09:52
查看更多