如何在RobotFramework中使用具有默认值的用户关键字参数

时间:2015-03-01 00:49:14

标签: robotframework

有人可以解释一下如何使用与数据驱动的测试用例相关的可选关键字参数的默认值吗?

正如您在我的示例中所看到的,在某些情况下并未使用所有默认值:

*** Test Cases ***
| testArgs | [Template] | doSomething
| | 111 : 222 : 333 : 444
| | xxx : 222 : 333 : 444 | xxx
| | 111 : xxx : 333 : 444 | | xxx
| | 111 : xxx : 333 : 444 | ${EMPTY} | xxx
| | None : xxx : 333 : 444 | ${None} | xxx
| | None : xxx : 333 : 444 | ${null} | xxx
| | 111 : 222 : xxx : 444  | | | xxx

*** Keywords ***
| doSomething
| | [Arguments] | ${expected} | ${arg1}=111 | ${arg2}=222 | ${arg3}=333 | ${arg4}=444
| | Log | exp: ${expected}
| | ${rc} | Set Variable | ${arg1} : ${arg2} : ${arg3} : ${arg4}
| | Log | arg: ${rc}
| | Run Keyword If  | '${rc}' == '${expected}'  
| | ... | Log | === equal ===
| | ... | ELSE  
| | ... | Log | !!! diff !!!
| | Log | **************************
| | Should be equal | ${rc} | ${expected}

结果:

testArgs                                                              | FAIL |
Several failures occurred:
1)  : xxx : 333 : 444 != 111 : xxx : 333 : 444
2)  : xxx : 333 : 444 != 111 : xxx : 333 : 444
3)  :  : xxx : 444 != 111 : 222 : xxx : 444

我知道我可以使用命名参数来设置特定的关键字参数。但这只能在关键字驱动的测试用例中实现。

此致 汤姆

3 个答案:

答案 0 :(得分:9)

仅使用您要传递的参数调用特定关键字。 例如:



*** Test Cases ***
TEST
    MyKeyword   a=1    c=3

*** Keywords ***
MyKeywords
    [Arguments]   ${a}=0   ${b}=2   ${c}=3




在这里,我没有通过论证' b'。默认情况下,它将需要b = 2

答案 1 :(得分:4)

“机器人框架用户指南”中的一个示例:

*** Keywords ***
    Two Arguments With Defaults
    [Arguments]    ${arg1}=default 1    ${arg2}=${VARIABLE}
    [Documentation]    This keyword takes 0-2 arguments
    Log    1st argument ${arg1}
    Log    2nd argument ${arg2}

 *** Test Cases ***
Example
    Two Arguments With Defaults    arg2=new value

所以Peter Bingham是对的:

*** Test Cases ***
TEST
    MyKeyword   a=1    c=3

*** Keywords ***
MyKeywords
    [Arguments]   ${a}=0   ${b}=2   ${c}=3

答案 2 :(得分:0)

您已经在示例中使用了默认参数值:

0a)111 : 222 : 333 : 444 =>仅设置了${expected},所有其他args均为默认值(并且有效)。

0b)111 : xxx : 333 : 444 | | xxx =>这不会输出任何错误,${arg1}默认值似乎已正确使用。

1)None : xxx : 333 : 444 | ${None} | xxx =>'None'文本不是特殊值${None},您可能将${expected}改成其中之一: $ {None} : xxx : 333 : 444 | ${None} | xxxNone : xxx : 333 : 444 | | xxx

2)None : xxx : 333 : 444 | ${null} | xxx =>与上述相同,关于文本“ None”与值${null}之间的区别,您可以使用上述类似的道具来更正。

3)111 : 222 : xxx : 444 | | | xxx =>找不到在结果中将${arg1}${arg2}设置为${None}的原因:它们应该被赋值,并且应该不输出错误;可能是您为了输出错误而专门将此行更改为111 : 222 : xxx : 444 | ${None} | ${None} | xxx吗?

示例中没有问题,可以适当地使用默认值。 (我知道这是一个3岁的线程,但是我正在寻找有关RobotFramework中默认值的“操作方法”,从而做出答复。)