POSTBOTE: so Überprüfen Sie in der Json-Antwort Array, wenn ein Schlüssel:Wert existiert
Möchte ich überprüfen, in meinem JSON-Antwort Array wenn ein Schlüssel:Wert existiert.
und ich wollen, wenn Sie den Schlüssel:Wert gefunden wird raus aus der Schleife und erhalten Sie das Testergebnis.
Können Sie bitte unterstützen Sie mich, wie es zu tun?
z.B. habe ich die folgende Antwort:
[
{
"persID": "personID_1",
"vip": false,
"account": {
"contactName": "value1",
},
"premium": {
"Name": "value2",
"Director": "value3",
"company": "value7",
"homePage": "value6",
"address": {
"country": "value8",
"city": "value9"
},
"photo": value10
}
},
{
"persID": "personID_2",
"vip": false,
"account": {
"contactName": "value11",
},
"premium": {
"Name": "value12",
"Director": "value13",
"company": "value17",
"homePage": "value16",
"address": {
"country": "value18",
"city": "value19"
},
"photo": value110
}
},
.....
.....//dynamic response can be "n" elements!!!!
]
und ich möchte, um zu überprüfen, ob in diesem array ein Schlüssel-Wert mit ("persID": "personID_3") vorhanden. (z.B. für persID_3, sollte das Ergebnis sein fehlgeschlagen, und persID_2 übergeben)
Ich habe Folgendes versucht, aber ohne Ergebnis:
var jsonArray = pm.response.json();
var persID = "persID_3";
pm.test("2. tets check if persdID exist in array", function () {
var i=0;
for(i; i<jsonArray.length;i++){
pm.expect(jsonArray).to.have.property(jsonArray[i].persID, persID);
//pm.expect(jsonArray[i]).to.have.property(jsonArray[i].persID, persID);
}
});
Habe auch versucht mit
var jsonArray = JSON.parse(responseBody);
und
pm.erwarten(jsonArray[ich])..haben.Eigenschaft(jsonArray[i].persID, persID);
aber zu keinem Ergebnis
Vielen Dank für jede Unterstützung.
InformationsquelleAutor AKADO | 2018-04-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Briefträger verwendet eine erweiterte Umsetzung der chai Bibliothek.
https://github.com/postmanlabs/chai-postman
Können Sie so etwas wie dieses, um zu überprüfen
Ich bin hardcoding das response-Objekt. Sie können analysieren, es aus Ihrem API-Antwort, wie Sie tun es bereits mit pm.Antwort...
InformationsquelleAutor Sivcan Singh
Könnten Sie Lodash Schleife über das array und überprüfen Sie den Wert in der Antwort:
Diese sollte der test als nicht bestanden, wenn die
personID_2
Eigenschaft vorhanden ist, aber dieser Wert kann alles sein, Sie mögen. Ich habe Ihre Antwort Daten und erstellt eine schnelle API-route zu zeigen, Sie diese arbeiten.Habe ich den Wert in der Fehlermeldung, so dass es mehr Details auf der test-Ausgabe.
Lassen Sie mich noch einen Blick vor Ort und ich werde sehen, ob ich etwas für Sie - Nur um zu bestätigen, Sie möchten zu prüfen die Eigenschaft, und wenn Sie da ist, Sie wollen den test zu scheitern?
Eigentlich möchte ich überprüfen, ob eine Eigenschaft mit dem Schlüssel UND der Wert X wird in der Array-Liste und wenn ja, das Ergebnis von Tests sollten bestanden sein, andernfalls fehlgeschlagen. (nicht nur die Schlüssel (wenn mit der Eigenschaft, die Sie bedeuten-Taste, auch der Wert) FYI die Eigenschaft ist immer in das array, aber ich möchte, um zu sehen, wenn mit den speziellen Schlüssel da ist oder nicht z.B. persID ist immer in der Antwort, sondern überprüfen wollen, für alle array-element, wenn persID = 3 da ist oder nicht. Dank
Nicht, dass der code nicht das tun, was Sie Fragen? Es ist das Durchlaufen der ganzen Reihe, wenn die Eigenschaft
perID
einen bestimmten Wert hatpersonID_2
in diesem Fall beenden Sie den test und scheitern. Wenn es nicht finden{"persID": "personID_2}
dann wird der test bestanden. Möglicherweise müssen Sie überprüfen Sie Ihre Frage, wenn dieses nicht ist, was Sie eigentlich brauchen, wie es ist einfach zu verwirrend, zu verstehen, was Sie jetzt wirklich brauchen.InformationsquelleAutor Danny Dainton
Dank, Danny & Sivcan,
mit Ihrer Unterstützung konnte ich herausfinden, was ich brauche, ist vielleicht nicht schön, coding, aber es funktioniert. Ich konnte nicht mit Ihrer Funktion (von Danny), wie raus aus der Schleife. also mit dieser Lösung war, für mich zu arbeiten:
in diesem Fall wird der Fall, wenn die Eigenschaft mit dem Wert vorhanden ist.
for loop
und dann eine weitere Schleife (_.each()
) innen - das sind die genau die gleiche Sache. Was ich zur Verfügung gestellt wirdloop
durch die ganze - array und scheitern, wenn der Wert in es. Ersetzen Sie einfach 'personID_2' mitpm.environment.get("regDB_persID")
. Wenn Sie brauchen, um zu sehen, was passiert während der Prüfung hinzufügenconsole.log(arrItem.persID)
unter der_.each()
- Anweisung zu sehen, die Elemente, die überprüft werden. Deine Fragen sind so verwirrend zu verstehen, und wie es scheint, ändern Sie Ihre Meinung auf halbem Weg durch.InformationsquelleAutor AKADO