在Robot Framework中使用命名参数
我想把一组带名字的变量传递给一个关键字,像这样:
| | Bypass | environment=${SystemUnderTest} | device=android |
这个关键字在Python中是这样定义的:
def Bypass(**kwargs):
print "kwargs", kwargs
但是这样做会出现错误信息:
关键字 'agents.Bypass' 期望 0 个参数,但得到了 ...
不过如果我稍微修改一下关键字的定义,像这样:
def Bypass(*args):
print "args", args
测试就能成功,我在日志中看到这个信息:
信息 args (u'environment=staging', u'device=android')
我该如何只传递我的命名参数呢?
1 个回答
2
据我所知,这个功能是不能通过关键词来实现的。如果我需要这么灵活的解决方案,我会这样做:
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