1. 程式人生 > >jmeter新增http請求、java請求,將返回的json資料提取出來並將結果追加到一個檔案

jmeter新增http請求、java請求,將返回的json資料提取出來並將結果追加到一個檔案

jmeter新增http請求、java請求,將返回的json資料提取出來並將結果追加到一個檔案

抽獎活動返回的是json資料,所以需要先將返回的json字串裡面需要統計的欄位提取出來,此處需要統計的是reward欄位(reward即返回的獎品型別)

每個http請求都會返回一個reward,但jmeter一個檔案只能儲存一個結果,不能往結果中追加結果,如果要統計每個reward的型別,最優的辦法就是將所有返回同類型的reward欄位全部追加到一個檔案並儲存在本地,因此可以採用java請求來處理,追加寫到檔案並儲存到本地

1、jmeter傳送http請求

1) 新建http請求預設值

可在這裡面新增請求的伺服器IP或名稱

2)新建http請求

可在這選擇請求方法(此處是post),請求路徑以及攜帶的引數,攜帶引數的確定可通過抓包獲取

執行之後,返回資料為:

{
  "errcode":0,
  "data":
  {
    "reward":4
  }
}

我們只需要統計獎品型別reward返回的欄位

2、提取json資料

1)新增正則表示式

引用名稱:reward(此處可自定義)

其中正則表示式的內容是否正確,可以先自己測試一把,即執行之後在察看結果樹裡面可以看到一個http請求,選擇RegExp Tester,在Regular expression裡面輸入正則表示式,可以看見返回的結果是否正確

2)檢視正則表示式的返回結果,可線上程組-新增Debug Sampler,執行之後可選擇Debug Sampler 檢視正則表示式的返回結果

3)正則表示式可以正確返回,所以我們正則表示式引用的名稱 reward可以作為一個變數,可在其他地方輸入${reward}來引用

3、java請求

使用正則表示式已經提取到獎品型別reward欄位,再作為引數提供給java請求,按照log+返回獎品型別命名檔案,把同一個返回型別儲存到同一個檔案裡面,reward有n個返回型別,就儲存n個檔案

eclipse中新建jmeter相關java類,有需要 用到jmeter相關的jar包,所以需要將截圖下的兩個jar匯入到eclipse中

1)新建一個java類AppendFile  功能是往檔案中追加內容

package editFile;

import java.io.IOException;
import java.io.RandomAccessFile;

public class AppendFile {
public static void main(String[] args) {
AppendFile.appendFile("E:\\dd.txt", "1111");
AppendFile.appendFile("E:\\dd.txt", "11111");

}

public static void appendFile(String fileName, String content) {
try {
// 開啟一個隨機訪問檔案流,按讀寫方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 檔案長度,位元組數
long fileLength = randomFile.length();
// 將寫檔案指標移到檔案尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content + "\r\n");
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

2)新建一個java請求類WriteResult ,作用是從jmeter獲取獎品型別reward,並使用返回型別 寫入檔案

package editFile;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class WriteResult implements JavaSamplerClient {
private SampleResult results;
private String reward;
private String threadNumber;

// 設定從jmeter傳入引數
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("reward", "${reward}");// 設定reward引數     ---此處的${reward}引數即正則表示式提取引數命名的變數名
return params;
}

// 初始化方法,效能測試時只執行一次
public void setupTest(JavaSamplerContext arg0) {

}

// 重複執行測試的地方
public SampleResult runTest(JavaSamplerContext arg0) {
reward = arg0.getParameter("reward"); // 獲取jmeter傳入的引數值,
results = new SampleResult();
results.sampleStart();// jmeter 開始統計響應時間標記

AppendFile.appendFile("E:\\jmeter\\log"+ reward + ".txt", reward);     

if(reward.length() ==1){
results.setSuccessful(true);
results.setResponseData("reward:"+reward, null);

}else{
results.setSuccessful(false);
results.setResponseData("獲取失敗 ", null);
}

results.sampleEnd();// jmeter 結束統計響應時間標記

return results;
}

// 結束方法,實際執行時每個執行緒僅執行一次,在測試方法執行結束後執行
public void teardownTest(JavaSamplerContext arg0) {
}

public static void main(String[] args) {
// TODO Auto-generated method stub
}
}

3)把java專案檔案匯出jar包,放在jmeter 的lib/ext 資料夾中,開啟jmeter新增一個jmeter 的java請求,選中測試類,會自動顯示reward引數(這個引數是在java請求類WriteResult 的方法中設定:

public Arguments getDefaultParameters()

params.addArgument("reward", "${reward}");


4、使用10個執行緒迴圈50次,可在本地儲存路徑下面看到儲存的結果追加檔案:

選擇其中一個檔案開啟,http請求返回的同類型全部儲存在同一個型別檔案裡面

相關推薦

jmeter新增http請求java請求返回json資料提取出來結果追加一個檔案

jmeter新增http請求、java請求,將返回的json資料提取出來並將結果追加到一個檔案 抽獎活動返回的是json資料,所以需要先將返回的json字串裡面需要統計的欄位提取出來,此處需要統計的是reward欄位(reward即返回的獎品型別) 每個http請求都

PHP對接APP的介面類返回json資料xml資料

<?php /* * APP資料處理類 * 作 者:永樂開發 * 日 期:2017.7.31 * 郵 箱:[email protected] * 博 客:http://www.isu5.cn http://it.alipea.com */ class R

解決WebApiMvc返回json資料遇見日期帶T

我們用webapi自帶的json序列化時,遇見資料庫datetime型別的日期中間會多加一個T,就像2017-09-09 22:11:26.267,而經過自帶的json處理後會變成2017-09-09T22:11:26.267。 解決辦法: 我們可以看到自帶的json有三

Jmeter取樣器:http請求FTP請求

性能測試 sample sel 就會 交互 remote 原因 Coding logic 1.1.1 取樣器 8類可執行的元件中,取樣器是典型的不與其他元件發生交互作用的元件,邏輯控制器指對其子節點的取樣器有效,而其他元件(配置元件、定時器、斷言、監聽器)需要與取

關於HTTP請求Ajax請求請求的同步和非同步

使用了很長時間的Ajax請求了,一直都是在以非同步的方式在使用。昨天聽了一個講座涉及到apache server,偶然想到了這Ajax請求和HTTP請求的一些區別和聯絡,就在網上好好搜了一頓,把搜到的結果寫一下,理清一下自己的頭緒吧。 首先最早是沒有Ajax請求的,只有普通的HTTP請求,這個時候傳送一次HT

java傳送http getpost請求

/** * 向指定URL傳送GET方法的請求 * @param url 傳送請求的URL * @param param 請求引數,請求引數應該是 name1=value1&name2=value2 的形式。 */ publ

python urllib2 http getpost請求的區別

返回 sof left span outline text param quest apple python urllib2 實現HTTP 的GET POST 請求python 一般可以用模塊urllib2 來實現GET POST的http 請求GET 請求 im

Java傳送POST請求引數為JSON格式接收返回JSON資料

/** * 傳送post請求 * @param url 路徑 * @param jsonObject 引數(json型別) * @param encoding 編碼格式 * @return * @throws P

獨立使用zuul閘道器分發不同服務的請求許可權控制非SpringCloud

閘道器api Gateway的重要性不言而喻,閘道器負責統一接收所有請求,然後根據不同的規則進行轉發到不同的服務。使用閘道器能夠統一的管理請求日誌、進行許可權控制、過濾等,這樣就能避免在每個單體應用中做重複的工作。這一篇主要是講zuul的獨立使用,就是隻作為一個獨立的專案進行

Java Web開發8__HTTP GET請求POST請求的區別, 重寫 service() 方法

一  HTTP  Get 請求, 開發者和使用者可以直接在瀏覽器中輸入URL,如果是在Servlet 類, doGet() 將被正常訪問,並輸入正確結果。     Get 請求, 可以在瀏覽器輸入 Servlet 的URL ,實現訪問。 二

C#模擬傳送http getpost請求的方式

1、WebRequest 同步方式: /// <summary> /// 向指定URL發起請求(可用於遠端傳送資料) /// </summary> /// <param name="url"> /

Tomcat伺服器與Http協議之請求(get請求post請求)和響應

發展歷程 1、最早的web伺服器-NCSA(美國國家超級計算應用中心的縮寫),由於主要開發者的離開,讓其前景變得不明朗。所以一些開發者聚集在一起,對其進行了缺陷修復和增強程式碼,釋出了新的版本Apache,即:“打補丁後的Web伺服器(A Patchy Web

Jmeter二次開發——基於Java請求

# 簡述 這近幾年,越來越多非http的協議需要進行效能測試,包括不僅限於各類rpc、mq、快取等。對於這些協議,市面上可能沒有現成的工具可以直接使用,這個時候,我們可以自己動手,通過編寫相應的JavaSampler來高效地開展效能測試工作。 # 環境準備 - java環境已搭建ok - jmeter環境已

Java--對接微信第六篇之根據請求url及所需引數返回json

與微信對接就是與別人的介面對接,呼叫別人介面獲取微信資料的過程。 首先我們需要指定微信那邊需要什麼引數,介面返回哪些json資料。知道了這些,就只有呼叫介面的事情了。 所以,我們需要一個方法,能夠傳遞url+access_token+params然後將返回結果組裝成我們需要格式的方法。

Vue vue-resource 全域性攔截器 PostGetJsonp跨域請求配置請求 全域性路徑配置

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../n

javaweb總結(九)--從jsp頁面傳送ajax請求servlet接受引數返回json資料

來自:https://blog.csdn.net/yanghan1222/article/details/78447231   今天遇到了問題把我難住了,解決之後就趕緊來記下來 這是一個很簡單的更新使用者的問題 先來看看專案所需jar包 接下來就是jsp頁面的東西

介面自動化之httpclient發get請求post請求

package com.second; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apac

springboot專案請求可以進入controller返回結果報404

返回值: { "timestamp": 1507703410086, "status": 404, "error": "Not Found", "message": "Not Found", "path": "/as

list集合轉換成json資料ajax請求返回json資料再通過迴圈顯示出來

之前在網上查了很多關於迴圈顯示ajax返回值的方法,很多都不對的,顯示不了我要的結果。後來自己鼓搗出來了,發出來分享一下自己的成果。因為ajax不能返回集合的,需要把集合list轉換成json返回,再用迴圈的方式,顯示出結果。 操作層 //編碼方式request.set

java 通過傳送json,post請求,返回json資料

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java