2016-04-26 8 views
1

以下の環境でロボットフレームワークを使用します。Robotframework:テストケースで引数を指定してキーワードでjsonを作成する方法

  • のPython 2.7.6
  • robotframework 2.8.7
  • のUbuntu 14.04.3 LTS

私がリクエストを投稿するキー値からJSONを作成したいです。 私は次のパターンを試して、 Test Create Json1は正しく動作しますが、Test Create Json2は正しく動作しません。私はキーワードでJSONを作成したい

*** Settings *** 
Library Collections 
Library json 

*** Variables *** 
${NAME} XXXX 
${ID} YYYY 

*** Test Cases *** 
Test Create Json1 
    ${req_dict} Create Dictionary name=${NAME} id=${ID} 
    ${req_json} Json.Dumps ${req_dict} 
    Log To Console *** Test Create Json1 Result *** 
    Log To Console ${req_json} 

Test Create Json2 
    ${resp} Prepare Json Keyword name=${NAME} id=${ID} 
    Log To Console *** Test Create Json2 Result *** 
    Log To Console ${resp} 

*** Keywords *** 
Prepare Json Keyword 
    [Arguments] @{args} 
    ${req_dict} Create Dictionary @{args} 
    ${req_json} Json.Dumps ${req_dict} 
    [Return] ${req_json} 

アウトプット

Test Create Json1 
{"name": "XXXX", "id": "YYYY"} 

Test Create Json2 
{"name=XXXX": "id=YYYY"} 

は、どのように私はテストがJson2を作成し変更できますか?

答えて

1

あなたの根本問題は辞書作成です。テスト1では、適切に辞書を作成します。これにはname =パラメータのペアが必要です。

テスト2では、 "NAME = XXXX" "ID = YYYY"という文字列を渡しています。これにより、キー "NAME = XXXX"と値 "ID = YYYY"の辞書が作成されます。あなたは、文字列を分割し、このように辞書にそれらを設定する必要が

*** Settings *** 
Library Collections 
Library json 
Library String 

*** Variables *** 
${NAME} XXXX 
${ID} YYYY 

*** Test Cases *** 
Test Create Json1 
    ${req_dict} Create Dictionary name=${NAME} id=${ID} 
    ${req_json} Json.Dumps ${req_dict} 
    Log To Console *** Test Create Json1 Result *** 
    Log To Console ${req_json} 

Test Create Json2 
    ${resp} Prepare Json Keyword name=${NAME} id=${ID} 
    Log To Console *** Test Create Json2 Result *** 
    Log To Console ${resp} 

*** Keywords *** 
Prepare Json Keyword 
    [Arguments] @{args} 
    ${req_dict} Create Dictionary 
    :FOR  ${pair} IN  @{args} 
    \  ${key} ${value}=  Split String ${pair} = 
    \  Set To Dictionary ${req_dict} ${key}=${value} 
    ${req_json} Json.Dumps ${req_dict} 
    [Return] ${req_json} 
+0

私は理解して{引数} @渡されたが、「文字列」と解釈されているので、私は、キーワード辞書をリメイクする必要があります。あなたのサンプルは正しく動作します。ありがとうございました ! – rootpetit

関連する問題