応答本文に次のJSON形式があります
[
{
"Name" : "Prashant",
"City" : "Sydney"
},
{
"Name" : "Yogi",
"City" : "London"
}
]
この配列にレコードがあるかどうかを確認するためのより良い方法は何ですか。ある場合は、最初の配列インデックスの「名前」を教えてください。 jMeter用のjp @ gcJSONエクストラクタプラグインを使用しています。
プラグインを使用してこれを解析することは可能ですか、それとも正規表現を使用して解析する必要がありますか?
bik Load Pack バージョン3.0以降のJMeterの一部であるJMeterのJSONプラグイン(寄贈プラグイン)を使用して JSON Extractor 、あなたはそれを行うことができます:
テスト計画の概要:
ULP_JSONポストプロセッサー:
コントローラーの場合:
そして、これが実行結果です:
ご覧のとおり、私たちのソリューションで可能です
プラグインについてはよくわかりませんが、JSONパス式をサポートしている場合は可能です。
次の式を試してください:$.[0].Name
。
これは私が使用するプラグインです: http://jmeter-plugins.org/wiki/JSONPathExtractor/ そして与えられた式はそれで動作します。
JSONパス式の詳細については、 http://goessner.net/articles/JsonPath/index.html#e2 を参照してください。
JMeterはJSONが発明されるずっと前に設計されていたため、JMeterでのJSONの操作はそれほど簡単ではありません。ただし、作業を楽にする拡張機能がいくつかあります。
応答から値をフェッチするための正規表現エクストラクタを追加できます。
このような:
休憩サービスサンプルを入手:
{
"ObjectIdentifiers": {
"internal": 1,
"External1": "221212-12121",
"External3": "",
"Name": "koh"
},
"PartyType": "naturalPerson",
"NaturalPerson": {
"idNo": "221212-12121",
"Title": "Mr",
"Name": "koh",
"FirstName": "",
プロジェクトでは、jmeterを使用してjson応答を解析するための同様の要件がありました。要件は、json応答のすべてのフィールドを検証することであり、フィールドの期待値は外部データソースから提供されます。
この場合、Groovyスクリプトを実装できるため、JSR223PostProcessorが非常に便利であることがわかりました。最近のJmeterバージョンにはデフォルトのプラグインとして付属しています
編集:
以下はコードスニペットです。
//get the JSON response from prev sampler
String getResponse = prev.getResponseDataAsString();
//parse the response and convert to string
JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
String parResponse = parser.parse(getResponse);
String preResponse = parResponse.toString();
JsonObject NaturalPerson = JsonObject.readFrom(preResponse);
//replace all commas with a semi-colon
String csvResponse = preResponse.replaceAll(",", ";");
//log response to file
logFileName = "C:/Apache-jmeter-5.1.1/Web_Service_Output.csv";
BufferedWriter outLog = new BufferedWriter(new FileWriter(logFileName, true));
outLog.write(csvResponse + "\n");
outLog.close();
可能であれば、常にRegular Expression Extractor
を使用してください。 JSON/XPATH /その他のエクストラクターは避けてください。それらは使いやすいように見えるかもしれません。しかし、それらはより多くのメモリと時間を消費します。テスト計画のパフォーマンスに影響します。
source: http://www.testautomationguru.com/jmeter-response-data-extractors-comparison/