在Robot Framework中使用命名参数

0 投票
1 回答
6280 浏览
提问于 2025-04-17 18:56

我想把一组带名字的变量传递给一个关键字,像这样:

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

撰写回答