如何指定空列表,空dict和Boolean作为机器人框架关键字的默认值。

时间:2017-10-18 15:30:19

标签: python robotframework

我想指定默认值,例如python

def my_function(arg1="my_string", arg2=[], arg3={}, arg4=True):
    pass

以下是与上述等效的示例关键字定义。我想指定默认值。

*** Keywords ***
My Function

    [Arguments]     ${ARG1}=my_default_string    ${ARG2}= <How to specify empty list)    ${ARG3}= <How to specify empty dict)    ${ARG4}= <How to specify boolean true)

    some statements
    some more statements

2 个答案:

答案 0 :(得分:4)

如您问题的评论中所述,您do not want to use mutable default values。在这种情况下,一个常见的习语是这样的:

def my_function(arg1="my_string", arg2=None, arg3=None, arg4=True):
    if arg2 is None:
        arg2 = []
    if arg3 is None:
        arg3 = {}

请注意,arg1arg4未更改。这是因为它们是IMMUTABLE,因此可以正确地用作默认参数。显然,这种方法的一个问题是,您的函数的用户不容易知道arg2arg3的预期类型,因此您需要确保并包含一个解释预期类型的​​文档字符串

答案 1 :(得分:2)

虽然给定的答案很有用,但它并没有真正回答这个问题,因为问题是在Robot Framework中询问如何这样做,而不是在Python中。以下是您在Robot Framework中的表现:

My Function
    [Arguments]    ${arg1}=my_string    ${arg2}=${None}    ${arg3}=${None}    ${arg4}=${True}

注意我也为你的args使用了小写名称。如果要遵循最佳实践,则应使用大写变量名称作为全局变量,而不是本地或参数变量名称。