Python robot框架中命名参数的使用

Python robot框架中命名参数的使用,python,robotframework,named-parameters,Python,Robotframework,Named Parameters,我想将一组命名变量传递给关键字: 像这样: | | Bypass | environment=${SystemUnderTest} | device=android | 关键字在python中的定义如下: def Bypass(**kwargs): print "kwargs", kwargs 此操作失败,并显示以下错误消息: 关键字“agents.Bypass”应为0个参数,得到 但是如果我稍微改变一下关键字的定义,像这样 def Bypass(*args): print

我想将一组命名变量传递给关键字: 像这样:

|  | Bypass | environment=${SystemUnderTest} | device=android |
关键字在python中的定义如下:

def Bypass(**kwargs):
    print "kwargs", kwargs
此操作失败,并显示以下错误消息:

关键字“agents.Bypass”应为0个参数,得到

但是如果我稍微改变一下关键字的定义,像这样

def Bypass(*args):
    print "args", args
测试正常,我在日志中看到:

信息参数(u'environment=staging',u'device=android')


我怎样才能传递我的命名参数呢?

Afaik这不是通过关键字可以做到的。如果我需要这种灵活的解决方案,我的解决方案如下:

def bypass(kwargs):
    print "kwargs", kwargs

|  | ${kwargs}= | Evaluate | dict(environment=${SystemUnderTest}, device=android)
|  | Bypass | ${kwargs}
或者

def bypass(*args):
    kwargs = {}
    while args:
        kwargs[args.pop(-2)] = args.pop()
    print "kwargs", kwargs

|  | Bypass | environment | ${SystemUnderTest} | device | android

谢谢,这或多或少就是我一直在做的事情,代码越来越不可读了。我正试图解决这个问题。但似乎最好的方法是作为结构化数据对象使用。Hmmm-这向我表明,您试图在robotframework代码中处理太多复杂的逻辑,应该将更多的逻辑拆分为python库,但显然,如果没有看到您的代码,我就无法确定Robot framework的较新版本是否支持第一种方法中所示的关键字参数。