2017-02-02 7 views
0

Ich schreibe einen Test mit dem Roboter-Framework. Ich versuche, Werte in einem JSON-Feld zu aktualisieren, aber ich sehe ein seltsames Verhalten.Robotframe: Wie aktualisiere ich JSON-Feld Wert

Ich mache ein HTTP-GET und erhalten ein JSON. Ich überprüfen, was der Wert ursprünglich ist,

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

die zurück

valueA 

Dann versuche ich, wie unten die Werte zu aktualisieren.

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

Wenn ich die Ausgabe auf diese Weise log

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

Ich sehe

valueB 

aber wenn ich auf diese Weise überprüfen

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

Ich sehe

{u'SubComponents': valueA, u'MoreComponents': whatever} 

Was ist los und warum wird es nicht aktualisiert?

Ich muss das JSON-Feld aktualisieren, damit ich einen HTTP-PATCH tun kann. Ich habe versucht, folgende Json handling in ROBOT Aber es funktioniert nicht und ich denke, es hat etwas mit meiner JSON-Datei mit einfachen Anführungszeichen zu tun.

Übrigens, ich bin neu in json und Robot Framework

+0

Wo ist, und warum sind kochend Sie die Dinge? Sie können die JSON-Variable in Python bearbeiten –

+1

Die Pipe ist, wie der Roboterframework funktioniert .. oder Sie können zwei Leerzeichen verwenden. Alle Versuche, die ich gemacht habe, um es in Python mit Evaluate zu bearbeiten, sind fehlgeschlagen. Der Post, mit dem ich verlinkt habe, versucht dies zu tun, aber es funktioniert nicht für mich und ich kann nicht herausfinden, wie ich es beheben kann. – scarlso9

+1

@ cricket_007 - das '|' wird als Schlüsselworttrennzeichen verwendet, nicht die generische Pipe, die wir normalerweise kennen. Kann entweder einen Rohr- oder einen Raumtrenner verwenden - eine Frage der Präferenz. – Goralight

Antwort

4

Sie keine Variablen Art und Weise, die festlegen können. Sie müssen sich immer wieder daran erinnern, dass der Roboter keine Programmiersprache ist. Sie haben eine Variable mit dem Namen ${JSON["Components"]["SubComponents"]} erstellt. Sie sind nicht Aktualisierung der ursprünglichen ${JSON} Variable.

Sie können dies sehen, wenn Sie das Schlüsselwort Log variables verwenden. Sie sehen dieses neue Keyword mit einem Namen, der wie ein Wörterbuch aussieht.

Um den Wert eines Wörterbuchs ändern Sie wie Set to dictionary

Zum Beispiel ein Schlüsselwort verwenden müssen: die Python-Code

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

Danke für die Erklärung!Das macht jetzt Sinn, wenn ich es erkenne. Es erscheint ein bisschen komisch, dass der Roboter es erlauben würde, dass eine Variable genauso benannt wird wie ein Eintrag in einem Wörterbuch. Aber ich nehme an, dass das, wie Sie sagten, keine Programmiersprache ist. - Sie müssen dies zur selben Zeit gepostet haben, als ich meinen Kommentar abgegeben habe – scarlso9