jMeter RegEx JSON-Antwort

7

Ich habe ein paar Tutorials zur jMeter RegEx-Extraktion gelesen, aber es funktioniert nicht. Ich benutze jMeter 2.7.

Ich habe dieses JSON:

%Vor%

und dieser RegEx Extractor: "id": (. +?), hier ist der Screenshot von jMeter

Für die Extraktion bekomme ich $new_address_id = 2 statt 26 . Irgendwelche Ideen?

UPDATE 26.06.2012 :

Danke Cylian für deinen Vorschlag. Es ist sehr hilfreich. Am Ende änderte ich es in: "id":(\d+) .

Ich habe auch einen Ersatz in der JMX-Datei für

gefunden %Vor%

und ersetzen durch

%Vor%

Was die Lösung schnell gemacht hat. Danke!

    
Dean 16.06.2012, 03:16
quelle

3 Antworten

11

Ich schlage vor, Sie werfen einen Blick auf:

Ссылка

Dieser Abschnitt (JSON-Pfade, JSON-Pfad-Extraktor, JSON-Formatierer) ist speziell für diesen Fall gedacht. Diese sind in meiner Firma entwickelte jmeter-Tools, die sehr nützlich sind.

Nehmen wir Ihren Fall als Beispiel. Der Testfall sieht so aus:

Das Dummy-Beispiel gibt die Antwort zurück, genau wie die von Ihnen angegebene:

%Vor%

Die JSON-Extraktion ist sehr einfach:

%Vor%

Und da brauchst du keine ausgefallenen Regexes. Ergebnis ist 26 (das sehe ich im Debug-Sampler).

Aktualisierung von Fragen in Kommentaren:

Wenn Sie eine Liste von Werten hätten, d. h .:

%Vor%

Liste mit 2 Adress-Es, 1 hat ID 26 und eine andere 6. Der JSON-Pfad $.address.id sollte diese beiden IDs zurückgeben. Ich habe gerade den Quellcode des Samplers gesehen und es ist nicht möglich, die Anzahl zu ermitteln, aber Sie können dies tun, indem Sie Ihrer Probe einen weiteren Postprozessor hinzufügen, d. H.% Co_de%, und diesen Code hinzufügen:

%Vor%

Dabei ist BSF Sampler eine Variable, in der Sie die Ergebnisse von ${add} gespeichert haben.

    
ant 26.06.2012, 09:05
quelle
13

Sie verwenden .+? , was bedeutet:

  • . - Entspricht einem einzelnen Zeichen, das kein Zeilenumbruchzeichen ist (Standard, kann mit s flag geändert werden)
  • + - Entspricht dem vorhergehenden Zeichen zwischen einem und unbegrenzten Zeiten
  • ? - So oft wie möglich (faul)

Also, während es "id":26 entspricht, stimmt das Muster mit .+? als 2 nur mit 26 überein.

Um dieses Problem zu beheben, versuchen Sie etwas Besseres als das:

%Vor%

bedeutet

%Vor%

oder

%Vor%

bedeutet

%Vor%

oder

%Vor%

bedeutet

%Vor%

Hoffe, das hilft.

    
Cylian 16.06.2012 05:07
quelle
0

Der beste Weg, um die JSON-Antwort in Jmeter auszuwählen, ist etwas wie (? m) "nodeRef": "workspace: // SpacesStore / idSpaceStore", \ s * "name": "folder_for_testing-1372432881900",

(? m) - bedeutet, dass regexp als multiline-orientiert behandelt wird (\ s *) - bedeutet beliebige Zeichen

    
Skina 28.06.2013 16:05
quelle

Tags und Links