Python 3.x 将字典作为参数传递给RobotFramework测试

Python 3.x 将字典作为参数传递给RobotFramework测试,python-3.x,robotframework,Python 3.x,Robotframework,我的机器人测试中有一个字典,我想从调用测试的程序中填充它。我有两个文件:robotstarter.py和printdirectionary.robot。但是,当我运行脚本时,测试套件中的字典都是空的。我不确定这是python还是RobotFramework相关的问题 robotstarter.py import robot test_dict = {'dict.a': '2', 'dict.b': '2', 'dict.c': '2', 'dict.d': '2', 'dict.e': '2

我的机器人测试中有一个字典,我想从调用测试的程序中填充它。我有两个文件:robotstarter.py和printdirectionary.robot。但是,当我运行脚本时,测试套件中的字典都是空的。我不确定这是python还是RobotFramework相关的问题

robotstarter.py

import robot

test_dict = {'dict.a': '2', 'dict.b': '2', 'dict.c': '2', 'dict.d': '2', 'dict.e': '2', 'dict.f': '2'}
print(test_dict)
robot.run("printdictionary.robot", variable=test_dict)
printdictionary.robot

*** Variables ***
&{dict}    a=${1}    b=${1}    c=${1}    d=${1}    e=${1}    f=${1}

*** Test Cases ***
Test print the identity stuff
    Log To Console     \nDictionary:
    Log To Console     ${dict.a}
    Log To Console     ${dict.b}
    Log To Console     ${dict.c}
    Log To Console     ${dict.d}
    Log To Console     ${dict.e}
    Log To Console     ${dict.f}

它的工作原理是用数组替换robotstarter.py中的字典

test_dict={'dict.a':'2','dict.b':'2','dict.c':'2','dict.d':'2','dict.e':'2','dict.f':'2'}

变成:


test_dict={'dict.a:2','dict.b:2','dict.c:2','dict.d:2','dict.e:2','dict.f:2'}

不支持通过命令行参数变量传递字典。声明明确指出,只支持标量变量

。。。使用此语法只能设置标量变量,并且它们可以 仅获取字符串值


如果要传递任何类型的层次结构,则必须通过变量文件传递。这可以是对YAML文件的引用,也可以是声明字典的Python文件,或者是返回所需变量的Python方法/类。示例见。

为什么要否决?请给出反馈,以便我可以解决问题。我可能在这里遗漏了一些明显的内容,但是为什么您的python变量
test\u dict
要覆盖RF one
dict
-它们有不同的名称?另外,不要使用诸如“dict”之类的语言关键字作为名称,您正在本地范围内重新定义它们,并且不能使用原始名称。您可以直接添加{'dict.a…},而无需先声明它。i、 run(“printdirectionary.robot”,变量={'dict.a':'2','dict.b'…}),但我认为这样读起来更容易。为了澄清这一点,test_dict只是robot.run参数的占位符。虽然这确实会赋值,但它不会生成真正的字典。相反,它创建了6个独立的标量变量。对于命令行执行,限制是正确的,但OP是以编程方式调用框架的。