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!
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:
Dabei ist BSF Sampler
eine Variable, in der Sie die Ergebnisse von ${add}
gespeichert haben.
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.
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