我有一个具有单个功能的库,可以从字典中安全地获取密钥。在测试套件中可能吗?
def safe_get(dict_obj, key):
val = dict_obj.get(key)
if val is None:
val = {}
return val
Run Code Online (Sandbox Code Playgroud)
有没有办法使用类似Run_Keyword_Ifor 的方法来做到这一点Set_Variable_If?
假设您使用的是Robot 2.9或更高版本,则可以get使用Evaluate关键字在字典上调用该方法,该关键字将允许您在键不存在时指定默认值。
例如:
| | ${data}= | create dictionary | ...
| | ${value}= | evaluate | $data.get("some key", "default value")
Run Code Online (Sandbox Code Playgroud)
从robotframework 2.9开始,您可以通过删除花括号直接访问表达式中的变量(请参阅BuiltIn库文档中的“ 评估表达式 ” )。例如,如果您有一个名为的字典,则可以在表达式中使用实际变量。${data}$data
这使得在python表达式中使用变量非常容易。例如,如果您想为字典没有键时提供默认值,则可以get使用带有类似的Evaluate关键字来调用字典的方法$data.get(...)。
还要注意,robot将变量定义为${None}python值None(而不是字符串"None"),您可以在表达式中使用它来检查值是否为None。
下面的示例演示如何使用evaluate调用get字典的方法。第一个测试显示您可以检查None值,第二个示例显示如何提供默认值。
*** Settings ***
| Library | Collections
*** Test Cases ***
| Get value from dictionary, returning None if key not in dictionary
| | ${data}= | Create dictionary | key1=one | key2=two
| | ${value}= | Evaluate | $data.get("key3")
| | should be equal | ${value} | ${None}
| Get value from dictionary, returning default value if key not in dictionary
| | ${data}= | Create dictionary | key1=one | key2=two
| | ${value}= | Evaluate | $data.get("key3", "default value")
| | should be equal as strings | ${value} | default value
Run Code Online (Sandbox Code Playgroud)
当然,如果您希望默认值是一个新的字典(如您的问题所暗示),您也可以这样做:
| | ${value}= | Evaluate | $data.get("key3", {})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14318 次 |
| 最近记录: |