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

如何在RobotFramework中使用具有默认值的用户关键字参数,robotframework,Robotframework,有人能告诉我如何在数据驱动的测试用例中使用可选关键字参数的默认值吗 正如您在我的示例中所看到的,在某些情况下,并非所有默认值都被使用: *** Test Cases *** | testArgs | [Template] | doSomething | | 111 : 222 : 333 : 444 | | xxx : 222 : 333 : 444 | xxx | | 111 : xxx : 333 : 444 | | xxx | | 111 : xxx : 333 : 444 | ${EMP

有人能告诉我如何在数据驱动的测试用例中使用可选关键字参数的默认值吗

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

*** 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
我知道我可以使用命名参数来设置特定的关键字参数。但这只在关键字驱动的测试用例中可能

问候,,
Tom

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

***测试用例***
试验
MyKeyword a=1 c=3
***关键词***
我的关键词

[参数]${a}=0${b}=2${c}=3
机器人框架用户指南中的示例:

*** 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
彼得·宾厄姆是对的:

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

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

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

0a)
111:222:333:444
=>这只是
${expected}
集,所有其他参数都是默认值(并且它正在工作)

0b)
111:xxx:333:444 | | xxx
=>此输出没有错误,
${arg1}
默认值似乎使用正确

1)
None:xxx:333:444${None}{xxx
=>None'文本不是特殊值
${None}
,您可以使用以下方法之一更正
${expected}
${None}
:xxx:333:444${None}|xxx
无: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-yo线程,但我正在寻找一个关于RobotFramework中默认值的“如何”的答案。)

这给了我一个错误:我需要以下内容:MyKeywords[参数]${a}=0${b}=2${c}=3