【问题标题】:Use of named arguments in robot framework在机器人框架中使用命名参数
【发布时间】:2013-03-01 10:29:28
【问题描述】:

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

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

关键字在python中是这样定义的:

def Bypass(**kwargs):
    print "kwargs", kwargs

此错误消息失败:

关键字 'agents.Bypass' 预期 0 个参数,得到...

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

def Bypass(*args):
    print "args", args

测试有效,我在日志中得到了这个:

INFO args (u'environment=staging', u'device=android')

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

【问题讨论】:

  • 较新版本的 Robot 框架似乎支持关键字参数,如您的第一种方法所示。

标签: python robotframework named-parameters


【解决方案1】:

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

【讨论】:

  • 谢谢,这或多或少是我一直在做的事情,代码变得越来越不可读。我试图解决这个问题。但似乎最好的方法是用作结构化数据对象。
  • 嗯——这向我表明你正试图在你的机器人框架代码中处理太多复杂的逻辑,应该将更多的逻辑拆分到 python 库中,但显然我不能确定没有看过你的代码
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2021-10-08
  • 2022-01-02
  • 2022-01-16
相关资源
最近更新 更多