如何将多个参数传递给自定义编写的Robot Framework关键字?

时间:2016-09-06 06:36:53

标签: python-2.7 robotframework

用python 2.7编写的自定义关键字:

@keyword("Update ${filename} with ${properties}")
def set_multiple_test_properties(self, filename, properties):
    for each in values.split(","):
        each = each.replace(" ", "")
        key, value = each.split("=")
        self.set_test_properties(filename, key, value)

当我们如下所示在一行中发送参数时,它按预期工作:

"Update sample.txt with "test.update=11,timeout=20,delay.seconds=10,maxUntouchedTime=10"

但是当我们使用新行修改上述行时(为了更好的可读性),它无效。

Update sample.txt with "test.update = 11,
                        timeout=20,
                        delay.seconds=10,
                        maxUntouchedTime=10"

对此有何疑问?

2 个答案:

答案 0 :(得分:0)

我不确定它是否会起作用,但请尝试这样做

Update sample.txt with "test.update = 11,
... timeout=20,
... delay.seconds=10,
... maxUntouchedTime=10"

答案 1 :(得分:0)

你的方法不起作用,因为第二行被认为是对关键字的调用(称为"超时= 20,"),第三行被认为是另一个,依此类推。 3个点不起作用,因为它们是"细胞分离器" - 分隔符b / n参数。

如果您想要提高可读性,可以使用Catenate kw(它在Strings库中):

${props}=    Catenate      SEPARATOR=${SPACE}
...     test.update = 11,
...     timeout=20,
...     delay.seconds=10,
...     maxUntouchedTime=10

,然后使用该变量调用您的关键字:

Update sample.txt with "${props}"

btw,a)我认为装饰器中你的关键字声明没有双引号 - 即被称为^它们将被视为参数值的一部分,b)似乎有py方法中的错误 - 参数的名称是"属性"虽然itterator使用"值"和c)你可能想考虑使用命名的varargs(在python中使用** kwargs,在RF语法中使用$ {kwargs})(抱歉,offtopic,但不能&# 39;抵制:)