2016-10-07 6 views
0

ich eine JSON-Antwort in 1 Anfrage wie diese:Wie JSON-Antwort in 2 Anfragen übereinstimmen?

{ "total": 1, "Seite": 1, "Aufzeichnungen": 2, "Zeilen": [{ "id": 1034, "item_type_val": "Business Anforderung", "field_name": "Zugewiesen an", "invalid_value": "Jmeter System", "dep_value": "", "dep_field": ""}, {"id": 1033 "item_type_val": "Risiko", "field_name": "Kategorie", "INVALID_VALUE": "Energie", "dep_value": "Gespeichert User", "dep_field": "Zuständig"}]}

und in 2. Anfrage wie folgt:

{"total": 1, "Seite": 1, "records": 2, "rows": [{"id": 1100, "item_type_val": "Business Anforderung", "field_name": "Assigned To "," invalid_value ":" Jmeter System "," dep_value ":" "," dep_field ":" "}, {" id ": 1111," item_type_val ":" Risiko "," field_name ":" Kategorie " "INVALID_VALUE": "Energie", "dep_value": "Gespeichert User", "dep_field": "Zuständig"}]}

Beide sind gleich, aber unterschiedliche IDs. Ich muss die erste json Antwort von der 2. json Antwort überprüfen und beide vergleichen, die beide gleich sind oder nicht. hier sind beide gleich, haben jedoch unterschiedliche IDs, die akzeptabel sein sollten. Wie kann ich dies durch Regex tun, damit ich die IDs ignorieren und den gesamten Inhalt anpassen kann?

Antwort

0

Nicht sicher, ob man es mit einem einzigen Regex tun können, aber anderem Ausweg ist, können Sie eine Karte von ihm erstellen und dann alles vergleichen, außer ‚id‘

+0

Danke für Ihre Antwort.Kannst du mir bitte vorschlagen, wie kann ich eine Karte dafür in jmeter erstellen? –

0

Ich glaube, der einfachste Weg, nur würde diese id Verwerfen Einträge JSR223 PostProcessor und Groovy Sprache verwendet, die mit JSON support

  1. hinzufügen JSR223 Postprocessor als Kind des Samplers kommt, die Ihre JSON
  2. Setzen Sie den folgenden Code in das JSR223 P zurück ostProcessor der "Script" Bereich

    import groovy.json.JsonBuilder 
    import groovy.json.JsonSlurper 
    
    def slurper = new JsonSlurper() 
    def jsonResponse = slurper.parseText(prev.getResponseDataAsString()) 
    jsonResponse.rows.findAll { it.remove("id") } 
    def newResponse = new JsonBuilder(jsonResponse).toPrettyString() 
    //depending on what you need 
    vars.put("responseWithoutId", newResponse) // store response withou ID into a JMeter Variable 
    prev.setResponseData(new String(newResponse)) // overwrite parent sampler response data 
    log.info(newResponse)       // just print the new value to jmeter.log file 
    

JSR223 JSON

So haben Sie folgende Möglichkeiten:

  1. vars.put("responseWithoutId", newResponse) - speichert die neue JSON (ohne diese id) in eine ${responseWithoutId} JMeter Variable
  2. prev.setResponseData(new String(newResponse)) - nach dieser Zeile Ausführung Eltern s reichliche Daten nicht enthalten jeden „id“
  3. log.info(newResponse) - gerade druckt JSON ohne „id“ zu jmeter.log Datei

Ich weiß nicht, Ihr Testplan-Design, ich persönlich würde Antworten speichern 2 Anforderungen in 2 verschiedenen JMeter Variablen, dh ${response1} und ${response2} über Ansatz und mit dem Response Assertion wie vergleichen:

Response Assertion

Verwandte Themen