Python调用Robot Framework run_keyword传递字典命名参数异常求助
问题根因
BuiltIn().run_keyword 方法的参数规则为:第一个参数是要调用的关键字名称,后续可变位置参数*args会按顺序传递给目标关键字作为位置入参,命名参数需要通过Python的**kwargs语法传递。
你原来的写法将整个args字典作为单个位置参数传给目标关键字,因此Test KW的第一个参数arg1收到了完整的参数字典,第二个参数arg2无入参为默认空值。
修复代码
修改importresource.py中run_keyword的调用行即可实现需求:
# 原错误写法:BuiltIn().run_keyword('Test KW',args) # 修复后写法:对参数字典做**解包,自动映射为目标关键字的命名参数 BuiltIn().run_keyword('Test KW', **args)
补充问题修正
你提供的Test KW关键字实现中,循环逻辑里用到的${args}字典未提前初始化,运行会抛出变量不存在的错误,需要在关键字开头补充初始化逻辑:
*** Keywords *** Test KW [Arguments] ${arg1}= ${arg2}= ${args} Create Dictionary # 新增字典初始化行 ${newvr}= set variable ${arg1} ${type value}= Evaluate type($arg1) Log To Console ${type value} Log to console ${arg2} :FOR ${key} IN @{arg1.keys()} \ Set To Dictionary ${args} ... ${key}=${arg1["${key}"]}
内容的提问来源于stack exchange,提问作者Antony Gladson R
相关产品推荐
相关产品推荐

