当前位置:  开发笔记 > 编程语言 > 正文

在机器人框架中安全地从字典中获取密钥

如何解决《在机器人框架中安全地从字典中获取密钥》经验,为你挑选了1个好方法。

我有一个具有单个功能的库,可以从字典中安全地获取密钥。在测试套件中可能吗?

def safe_get(dict_obj, key):
    val = dict_obj.get(key)
    if val is None:
        val = {}
    return val

有没有办法使用类似Run_Keyword_Ifor 的方法来做到这一点Set_Variable_If



1> Bryan Oakley..:

TL; DR:

假设您使用的是Robot 2.9或更高版本,则可以get使用Evaluate关键字在字典上调用该方法,该关键字将允许您在键不存在时指定默认值。

例如:

| | ${data}=  | create dictionary | ...
| | ${value}= | evaluate          | $data.get("some key", "default value")

说明

从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

当然,如果您希望默认值是一个新的字典(如您的问题所暗示),您也可以这样做:

| | ${value}= | Evaluate | $data.get("key3", {})

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有