2013-03-13 84 views
0

我想一组命名变量传递给关键字: 像这样:机器人框架使用的命名参数

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

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

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

这种失败,出现此错误消息:

关键字 'agents.Bypass' 预计0的论点,得到了...

,但如果我更改关键字定义略有下降,类似这样的

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

测试工作,我得到这个在我的日志:

信息ARGS(u'environment =分期”, u'device = android')

我该如何传递我的命名参数?

+0

机器人框架的新版本似乎支持关键字参数,如图中的第一种方法。 – jotrocken 2016-05-04 14:30:50

回答

2

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 
+0

谢谢,这或多或少是我一直在做的事情,代码变得越来越难读。我试图解决这个问题。但是,似乎最好的方法是使用结构化数据对象。 – 2013-03-15 18:10:05

+0

嗯 - 这告诉我你正在尝试处理robotframework代码中太复杂的逻辑,并且应该将更多的东西分解到python库中,但显然我不能确定没有看到你的代码 – theheadofabroom 2013-03-17 17:07:33