使用机器人框架忽略字典中的特定键

Ignore specific keys in a dictionary using robot framework

如何使用机器人框架脚本忽略字典中的特定键?该字典是一个嵌套的 dictionary.I 尝试使用以下代码但它仅删除第一级的键。感谢任何帮助。

*** Variables ***
&{type}    mobile=android    mobileV2=windows
&{DICTIONARY}     interface=ethernet    interfaceId=default    favorite=false    mobile=android    mobileV2=windows    type=&{type}

*** Test Cases ***
Filter Dictionary Values
    Log    \nDictionaty values... : ${DICTIONARY}  console=${True}
    ${d1_filtered} =      Evaluate    {k:v for k,v in ${DICTIONARY}.items() if k not in ('mobile','mobileV2')}
    Log    \nDictionaty filtered values... : ${d1_filtered}  console=${True}    

生成的输出日志如下。

字典过滤值...:{'interface':'ethernet','interfaceId':'default','favorite':'false','type':{'mobile':'android','mobileV2':'windows'}}

您可以创建您的库并将其导入 here. 使用这个 answer 库看起来像这样。

class MyLibrary:
    def deleteKeys(self, dict_del, lst_keys: list):
        for k in lst_keys:
            try:
                del dict_del[k]
            except KeyError:
                pass
        for v in dict_del.values():
            if isinstance(v, dict):
                self.deleteKeys(v, lst_keys)


        return dict_del


if __name__=="__main__":
    mydict= {'interface': 'ethernet', 'interfaceId': 'default', 'favorite': 'false', 'mobile': 'android', 'mobileV2': 'windows', 'type': {'mobile': 'android', 'mobileV2': 'windows'}}
    bad_keys = ['mobile','mobileV2']
    lib = MyLibrary()
    test = lib.deleteKeys(mydict, bad_keys)
    print(test)

这是机器人文件:

***Settings***
Library     ./MyLibrary.py
*** Variables ***
&{type}    mobile=android    mobileV2=windows
&{DICTIONARY}     interface=ethernet    interfaceId=default    favorite=false    mobile=android    mobileV2=windows    type=&{type}
@{remove_list}    mobile    mobileV2

*** Test Cases ***
Filter Dictionary Values
    Log    \nDictionaty values... : ${DICTIONARY}
    ${d1_filtered}=    MyLibrary.deleteKeys    ${DICTIONARY}    ${remove_list}
    Log    \nDictionaty filtered values... : ${d1_filtered}