web-dev-qa-db-ja.com

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

名前付き引数を使用して特定のキーワード引数を設定できることを知っています。ただし、これはキーワード駆動のテストケースでのみ可能です。

よろしく、トム

7
A20 Tom

渡す引数を指定して、特定のキーワードを呼び出します。例えば:

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

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

ここでは、引数「b」を渡していません。デフォルトではb = 2になります

15
Blue

Robot Frameworkユーザーガイドの例:

*** 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
5
cris

あなたの例ではすでにデフォルトの引数値を使用しています:

0a)111 : 222 : 333 : 444 => ${expected}のみが設定されています。他のすべての引数はデフォルトです(そして機能しています)。

0b)111 : xxx : 333 : 444 | | xxx =>これはエラーを出力しません。${arg1}デフォルト値は正しく使用されているようです。

1)None : xxx : 333 : 444 | ${None} | xxx =>「なし」というテキストは特別な値ではありません${None}、これらのいずれかで${expected}が修正されている可能性があります:$ {None} = : xxx : 333 : 444 | ${None} | xxxまたはNone : xxx : 333 : 444 |なし| xxx

2)None : xxx : 333 : 444 | ${null} | xxx =>上記と同じように、テキスト「なし」と値${null}の違いについては、上記の小道具と同様に修正できます。

3)111 : 222 : xxx : 444 | | | xxx =>結果で${arg1}および${arg2}${None}に設定されている理由が見つかりません。これらは評価されるべきであり、これによりエラーは出力されません。特に出力エラーのために、この行を111 : 222 : xxx : 444 | ${None} | ${None} | xxxに変更した可能性がありますか?

例では問題ありません。デフォルト値を適切に使用します。 (私はそれが3年間のスレッドであることを知っていますが、RobotFrameworkのデフォルト値に関する「ハウツー」を探していたので、答えました。)

0
Dinosaure