jmeter 傳送http請求,並把獲取到的請求的訂單資訊儲存到檔案中
有一個任務,需要頻繁傳送訂單請求,並分析訂單請求中有沒有存在重複訂單號,思路是用jmeter 傳送http請求,使用正則表示式獲取到訂單號,並把訂單號和執行緒號作為引數提供給java請求,在java請求中把訂單號寫到包括有執行緒號的命名檔案中。完成出來的樣子是這樣的
步驟如下:
1、Jmeter 傳送http請求
1) 新建HTTP資訊頭管理器
2) 新建HTTP請求
2,在下單過後返回部分資訊如下:"msg":"下單成功","result":"1","sendCode":"96828628","weektm":"星期二,12:00"
新建 正則表示式提取器 ,獲取sendCode 後面的值96828628 正則表示式填寫:"sendCode":"(\d{8}),這樣訂單號就儲存在變數sendCode中
3、到此,訂單號sendCode已經獲取到,需要把這個訂單號儲存到檔案中,可以採用“儲存響應到檔案” 把響應儲存到以執行緒命名的檔案中,但是不好的是一個檔案只能儲存一個結果,不能往結果中追加結果,對於後期彙總不方便
這裡使用了java請求來處理,按執行緒檔名命名,把同一個執行緒所有的響應結果儲存到同一個檔案中,n個執行緒就儲存n個檔案,這樣就使用了java請求,java請求需要做的有
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獲取訂單號和執行緒號,並使用訂單號和執行緒號 寫人檔案,同時jmeter 效能測試的java請求也是這樣來實現的,按照格式在runTest 中做各種請求。
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 senCode; private String threadNumber; // 設定從jmeter傳入引數 public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("senCode", "0");// 設定senCode引數 params.addArgument("threadNumber", "0");// 設定threadNumber return params; } // 初始化方法,效能測試時只執行一次 public void setupTest(JavaSamplerContext arg0) { } // 重複執行測試的地方 public SampleResult runTest(JavaSamplerContext arg0) { senCode = arg0.getParameter("senCode"); // 獲取jmeter傳入的引數值, threadNumber = arg0.getParameter("threadNumber"); // 獲取jmeter傳入的引數值, results = new SampleResult(); results.sampleStart();// jmeter 開始統計響應時間標記 AppendFile.appendFile("E:\\jmeter\\"+threadNumber+".txt", senCode); if(senCode.length() ==8){ results.setSuccessful(true); results.setResponseData("threadNumber:"+threadNumber+"|senCode:"+senCode, null); }else{ results.setSuccessful(false); results.setResponseData("threadNumber:"+threadNumber+"|沒有獲取到驗證碼 ", null); } results.sampleEnd();// jmeter 結束統計響應時間標記 return results; } // 結束方法,實際執行時每個執行緒僅執行一次,在測試方法執行結束後執行 public void teardownTest(JavaSamplerContext arg0) { } public static void main(String[] args) { // TODO Auto-generated method stub } }
把java專案檔案匯出jar包,放在jmeter 的lib/ext 資料夾中
開啟jmeter新增一個jmeter 的java請求,選中測試類,會自動顯示2個引數 sendCode 和threadNumber(這2個引數是在java請求類的的方法中設定:public Arguments getDefaultParameters()
sendCode = ${sendcode}
threadNumber = ${__threadNum}
使用3個執行緒執行多次,結果如下:
另外使用bean shel 也能儲存檔案,需要在bean shell中寫程式碼
import editFile.*; import org.apache.jmeter.threads.JMeterContextService; int threadNumber = JMeterContextService.getNumberOfThreads(); String sendCode = vars.get("sendcode"); //把獲取的sendcode 變成bean shell變數值 AppendFile.appendFile("E:\\jmeter\\result"+threadNumber+".txt", sendCode); System.out.println("finished");
但是 獲取的執行緒號程式碼都是1,因此所有的訂單號都儲存在同一個檔案中,不知道這樣會不會都在寫同一個檔案導致檔案不全,要測試下才知道
相關推薦
jmeter 傳送http請求,並把獲取到的請求的訂單資訊儲存到檔案中
有一個任務,需要頻繁傳送訂單請求,並分析訂單請求中有沒有存在重複訂單號,思路是用jmeter 傳送http請求,使用正則表示式獲取到訂單號,並把訂單號和執行緒號作為引數提供給java請求,在java請求中把訂單號寫到包括有執行緒號的命名檔案中。完成出來的樣子是這樣的 步驟如下: 1、Jme
java獲取字串裡的日期資訊,並把獲取的日期資訊轉成Date
字串:String aa="物品日報表 2018年9月29日"; Date newdate=stringZhuanDate(aa); //字串裡的時間轉換成date public Date stringZhuanDate(String biaoti){
服務端接收到客戶端傳送的檔名,並把檔案的內容返回給客戶端
public class ScoketService {public static void server() {System.out.println("-------------服務已啟動-------------");ServerSocket serverSocket = null;try {server
List集合練習題 完成getAllDog 方法,從一個Animal集合中挑選出所有的Dog物件,並把這些物件 放在一個Dog 集合中返回。
package cn.sc.test; import java.util.ArrayList; import java.util.List; public class TestAnimal { public static void main(String[] args) { List
(多型問題)從一個Animal陣列中挑選出所有的Dog物件,並把這些物件放在一個Dog陣列中返回
package com.day11_1; import java.util.*; public class Test9 { public static void main(String[] args) { Animal[] as = {
從鍵盤輸入4位學生的資料(學生資料包括學號、姓名和三門課成績),然後把它們轉存到磁碟檔案中去,再從磁碟檔案讀入相應變數中,並將變數內容輸出到螢幕。
#include<stdio.h>#define num 4struct stu{char number[20];char name[20];float Sub1;float Sub2;float Sub3;};int main(){int i;FILE *fp;
spring引入properties檔案,並在controller等層獲得引入檔案中屬性的值
引入配置檔案方法一: 用context:property-placeholder引入配置檔案 <!-- 配置由spring讀取jdbc的屬性檔案 --> <context:property-placeholder location="classpath:
java中使用Apache HttpClient傳送Http請求,並獲取返回結果
傳送http請求可以寫成一個工具類,HttpClient可以使用連線池建立,這樣的好處是我們可以自己定義一些配置,比如請求超時時間,最大連線數等等。 public class HttpUtil { private static CloseableHttpClient http
JAVA傳送HTTP請求,並接受返回內容
JDK 中提供了一些對無狀態協議請求(HTTP )的支援,下面我就將我所寫的一個小例子(元件)進行描述: 首先讓我們先構建一個請求類(HttpRequester )。 該類封裝了 JAVA 實現簡單請求的程式碼,如下:package atco.http; import java.io.BufferedR
使用HttpClient傳送http請求,並解析從伺服器端返回的資料
使用Apache的httpclient包可以模擬HTTP請求的傳送, get和post均可以。最方便的地方就是請求struts等web框架進行測試,省去了做測試頁面的差事。import java.io.IOException; import java.io.InputStr
layui基本使用(動態獲取數據,並把需要的數據傳到新打開的窗口)
拉伸 窗口 動態獲取 賬單 遮罩 跳轉 透明度 -c resize <div class="xiaoxi">\n‘ + ‘ <div class="layui-row">\n‘ + ‘ <input type="
Java後臺傳送post請求,並接收返回資訊
/** * 向指定的 URL傳送遠端POST方法的請求 * @param url傳送請求的 URL * @param json請求引數, * @return 所代表遠端資源的響應結果 */ public static JSONObject sendPost(String
nodejs 使用axios模組發起http請求,並進行攔截各種請求資料
1、安裝axios npm install axios --save -g 2、先寫好攔截器、服務等 新建一個名為http_server.js的檔案 // http_server.js var axios = require("axios") // 建立axios例項s c
fiddler 攔截指定的請求, 並獲取請求頭和token資訊
開啟 fiddler -> rules ->customize rules 編輯customizerules.js 檔案 找到OnBeforeRequest方法 在這個方法體的第一行新增如下程式碼(說明:if判斷中的域名自行定義,可攔截指定的域名請求資訊) if (oSe
自定義Spring的Aop切面類攔截業務請求,並獲取到請求的引數名和引數值
/** * @author 劉俊重 * @Description 稽核校驗 * 所有的service業務方法都會先走這個方法, * 先判斷本操作需不需要稽核,如果需要稽核則插入稽核隊列表, * 不需要稽核則直接插入相關業務表 * @date 2017年7月5日 */ @Component @As
java模擬http的Get/Post請求,並設定ip與port代理
1、因為很多公司的內網都設有代理,瀏覽器通過ip與port上網,而java程式碼模擬http get方式同樣需要外網代理; 2、Java實現http的Get/Post請求程式碼; 3、主要是設定HttpURLConnection請求頭裡面的屬性 比如Cookie、Us
python使用xlrd讀取excel資料作為requests的請求引數,並把返回的資料寫入excel中
實現功能: 從excel中的第一列資料作為post請求的資料,資料為json格式;把post返回的結果寫入到excel的第二列資料中 每一行的資料都不一樣,可實現迴圈呼叫 # !/usr/bin/env python # -*- coding:utf-8 -*- #import xlwt
python實現獲取電腦和嵌入式裝置(樹3)IP、主機名、Mac地址,並把這些資訊上傳雲伺服器。
import socket import uuid # 獲取主機名 hostname = socket.gethostname() #獲取IP ip = socket.gethostbyname(hostname) # 獲取Mac地址 def get_mac_address
Java傳送http POST,GET,並獲取返回資料
/** * * @param strUrl * 請求地址 * @param params * 請求引數 * @param method * 請求方法 * @return 網路請
Ajax傳送請求,並接受字串
前臺: $.ajax({ type: 'POST', url: url, dataType: "jso