python - 如果字典中存在键则运行关键字(机器人框架)

标签 python selenium automated-tests robotframework

我目前正在使用 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 按预期出现在日志中”,但不是“日志中意外出现了 bogus”

*** 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

关于python - 如果字典中存在键则运行关键字(机器人框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59775094/

相关文章:

Python缓存html文件

java - 如何点击购物车页面中的更新按钮 - Url ="http://live.guru99.com/"

javascript - TestCafe ClientFunction TypeError 错误,因为文档未定义

python - 我希望我已经创建的 virtualenv 能够访问系统包

python - 部署到 Google App 灵活引擎时,firebase_helper.py 中的 Crypto.Util 导入错误

python - 如何检测数据框中某些值的条纹?

selenium - 从哪里开始 webdriver 使用 xpath 查找元素

unit-testing - 在进程中设置 "late"测试用例的最佳方法

jenkins - 如何在 Jenkins 中显示单个测试通过/失败的结果?

python - 加号不携带