2017-02-02 29 views
0

私はロボットフレームワークでテストを書いています。私はjsonフィールドの値を更新しようとしていますが、奇妙な動作が見られます。Robotframework:JSONフィールドの値を更新する方法

私はHTTP GETを行い、jsonを受け取ります。私はその後、私は以下のように値を更新しよう

Log To Console | ${JSON["Components"]["SubComponents"]} 

valueA 

を返し、値が最初であるかどうか確認します。

${JSON["Components"]["SubComponents"]}= | Set Variable | valueB 

私は出力をこのよう

Log To Console | ${JSON["Components"]["SubComponents"]} 

をログインした場合、私は

valueB 

を参照してくださいが、私はこのよう

Log To Console | ${JSON["Components"]} 

をチェックすると、私は

見ます
{u'SubComponents': valueA, u'MoreComponents': whatever} 

何が起こっているのですか、なぜ更新されていませんか?

HTTP PATCHを実行できるようにJSONフィールドを更新する必要があります。 私は次のように試しましたJson handling in ROBOT しかし、それは動作しません。私はそれがJSONファイルの一重引用符と何か関係があると思います。

FYI私はあなたがそのように変数を設定することはできませんJSONとrobotframework

+0

Pythonコードであり、なぜあなたは物事をパイピングしていますか? Python内のJSON変数を編集できます –

+1

パイプはロボットフレームワークの仕組みです。または、2つのスペースを使用できます。私がPythonでEvaluateを使って編集しようとしたすべての試みは失敗しました。私はその試みをリンクしようとしましたが、それは私にとってはうまくいかず、解決する方法がわかりません。 – scarlso9

+1

@ cricket_007 - '|'はキーワードの区切り文字として使用されています。私たちが通常知っている汎用パイプではありません。パイプまたはスペースセパレータを使用することができます - 優先事項です。 – Goralight

答えて

4

に新しいです。あなたはロボットがプログラミング言語ではないことを思い起こさなければなりません。あなたがしたことは、文字通り、${JSON["Components"]["SubComponents"]}という名前の変数を作成したことです。あなたはではないオリジナルの${JSON}変数を更新していません。

キーワードLog variablesを使用すると、これが表示されます。この新しいキーワードは、辞書のような名前で表示されます。

ます。たとえば、このようなSet to dictionary

としてキーワードを使用する必要があります辞書の値を変更するには:

set to dictionary ${JSON["Components"]} Subcomponents=valueb 
+0

説明をありがとう!それが今私はそれを実現する意味があります。ロボットが変数を辞書のエントリと同じ名前にすることができるようになるのはちょっと変わったようですが、プログラミング言語ではないと言ったように、私はそれを推測しています。 - あなたは私のコメントを記入すると同時にこれを投稿したに違いない – scarlso9

関連する問題