jmeter(四十五)常用Beanshell腳本

整理了一批jmeter常用的beanshell腳本供大家參考!

時間戳

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
try{
Date date =new Date(); //獲取當前時間
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDate = sf.format(date);
Calendar cal = Calendar.getInstance();
cal.setTime(sf.parse(nowDate));
cal.add(Calendar.DAY_OF_YEAR,+0);?
String orderDate = sf.format(cal.getTime());
cal.add(Calendar.DAY_OF_YEAR,+365);?
String senderDate = sf.format(cal.getTime());
vars.put("orderDate",orderDate); //參數可以調用
vars.put("senderDate",senderDate); //參數可以調用
}
catch(Exception e){
}

下載文件

import java.io.*;
byte[] result = prev.getResponseData();?
String file_name = "D:\\gongju\\apache-jmeter-3.2\\bin\\download\\sqlEnt_${id}.zip";?
File file = new File(file_name);?
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

?

保存響應內容

FileWriter fstream = new FileWriter("XXX",true);
BufferedWriter out =new BufferedWriter(fstream);
out.write(vars.get("AAA")+","+ vars.get("BBB"));
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();

斷言

import java.io.UnsupportedEncodingException;
import org.apache.jmeter.assertions.AssertionResult;
import org.json.*;
String str = prev.getResponseDataAsString();
String result = "";
try {
result = java.net.URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
JSONObject data_obj=new JSONObject(str);
String result1 = data_obj.get("dockedContact").get("name").toString();
if(result1.contains("zhufc")) {
Failure = true;
FailureMessage = "斷言成功";
log.info("斷言成功");
}else{
Failure = false;
FailureMessage = "斷言失敗";
}

連接數據庫

import java.sql.*;
import java.util.*;
import java.lang.*;
import org.apache.regexp.*;
import org.json.*;
//一:數據庫取值
String drive = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://192.168.204.129:3306/";
String dbName = "aiopms";
String user = "root";
String pass = "000000";
String history = "";
String response = "";
String failuer = "";
String query ="SELECT projectid From pms_projects Where name ='測試項目'  order by 'desc' limit 1";
Connection Mycon = null;
Statement Mystmt = null;
ResultSet Myrset = null;
try{Mycon = DriverManager.getConnection(url+dbName, user, pass);}	catch(SQLException e){}
Mystmt = Mycon.createStatement();
Myrset = Mystmt.executeQuery(query);
while (Myrset.next()){history = Myrset.getString(1);}Myrset.close();Mystmt.close();if(history == "")
{Failure = true;FailureMessage = "連接數據庫失敗"; 
}

浮點時間戳轉換為標準時間

?

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
//10位的秒級時間戳
long time1 = ${time};//獲取時間戳變量
String result1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time1 * 1000));
log.info("10位時間戳(秒)--->Date:" +result1);//13位的毫秒級時間戳
//double time2 = 1515730332000d;
//String result2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time2);
//System.out.println("13位數的時間戳(毫秒)--->Date:" + result2);

?

  

?

解析jsonlist

利用beanshell獲取到json響應,然后通過JSONObject JSONArray 將數組解析,遍歷數組的length之后,提取參數值

我們需要解析如下的json響應,提取出中間的Namepopulation

//導入json包
import org.json.*;
//獲取獲取請求的返回值
String response_data = prev.getResponseDataAsString();?
//日志打印獲取請求的返回值
log.info(response_data);
//將String類型的返回值構造成JSONObject對象
JSONObject data_obj = new JSONObject(response_data);
//獲取作為下一個請求post的參數值Province(兩種方式)
//String Provincelist_str = data_obj.get("Province").toString();?
JSONArray Provincelist_str = data_obj.getJSONArray("Province");
//log.info(Provincelist_str);
//獲取Province數組的長度
int len = Provincelist_str.length();?String strlen = Integer.toString(len);vars.put("MessageNum",strlen);
log.info(strlen);
int i = 0;
for(;i < len;++i)
{
//獲取 data[ i ] 數組對象
JSONObject jsonTemp = (JSONObject)Provincelist_str.getJSONObject(i);
switch(i)
{
case 0:
//兩種提取參數的寫法
String NameItems = jsonTemp.getString("Name");
// String NameItems = jsonTemp.get("Name").toString();
// 兩種打印參數的方法
// vars.put("Name_1", jsonTemp.getString("Name"));?
vars.put("Name_1", NameItems);?
log.info(NameItems);
}
}

遞歸創建多級目錄

import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.RandomAccessFile;  StringBuffer fileBuf=new StringBuffer();  String filePar = "D:\\\目錄1\\目錄2";File myPath = new File( filePar );  if ( !myPath.exists()){myPath.mkdirs();  System.out.println("創建文件夾路徑為:"+ filePar);  }  String filename = "列表.csv";try {  FileWriter fw = new FileWriter(filePar + "\\\" + filename,true);String originalLine = “”+"\n";System.out.println("*** "+ originalLine);  fw.write(originalLine);  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  

常用內置變量

1.log 打印日志,寫入信息到jmeber.log文件。2.SampleResult 獲取SampleResult對象,能通過這個對象獲取想要的信息。3.Response 獲取Response對象,能通過這個對象獲取響應信息。4.Failure 查看接口調使用能否成功,假如返回false是成功的,true是失敗的。5.FailureMessage 失敗信息,沒有設置的時候失敗信息是空的,能set這個信息。6.ResponseData 獲取response body類型是byte[]。7.ResponseCode 返回接口code成功是200。8.ResponseMessage 獲取msg成功是OK。9.ResponseHeaders 獲取接口服務端返回的頭部信息。10.RequestHeaders 獲取用戶端請求的頭部信息。11.SampleLabel 獲取接口請求的名稱。12.SamplerData 獲取請求的url和body。13.ctx 代表上下文信息,能直接用。14.vars即JMeterVariables,操作jmeter變量,這個變量實際引用了JMeter線程中的局部變量容器(本質上是Map),常用方法:a) vars.get(String key):從jmeter中獲得變量值;b) vars.put(String key,String value):數據存到jmeter變量中;15.prev 獲取前面的sample返回的信息,常用方法:a) prev.getResponseDataAsString():獲取響應信息。b) prev.getResponseCode() :獲取響應code。

?調用cmd文件

String command = "cmd /c start D:\\apache-jmeter-3.2\\負載.bat";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

GUI小命令

button = new JButton( "登錄" );
frame = new JFrame( "My Frame" );
frame.getContentPane().add( button, "Center" );
frame.pack();
frame.setVisible(true);

?

轉載于:https://www.cnblogs.com/Zfc-Cjk/p/10842307.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248980.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248980.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248980.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Critical error detected c0000374

我發現出現上述錯誤是 free 兩次內存 float* ddnew float[2];delete[] dd;delete[] dd;轉載于:https://www.cnblogs.com/hook-gou/p/9994662.html

nodejs開發 過程中express路由與中間件的理解 - pyj063 - 博客園

nodejs開發 過程中express路由與中間件的理解 nodejs開發 express路由與中間件 路由 通常HTTP URL的格式是這樣的&#xff1a; http://host[:port][path] http表示協議。 host表示主機。 port為端口&#xff0c;可選字段&#xff0c;不提供時默認為80。 path指定請求資源的…

錯誤MSB4018 “ResolvePackageAssets”任務意外失敗的解決方法

昨天系統奔潰了&#xff0c;重裝系統后發現&#xff0c;之前寫的.netcore項目打開后重新生成報錯&#xff0c;錯誤如下嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態 錯誤 MSB4018 “ResolvePackageAssets”任務意外失敗。 NuGet.Packaging.Core.Packag…

(五)Unity插件生成

1&#xff09;新建空的AndroidStudio工程&#xff0c;但是新建過程時最小SDK版本要與unity一致&#xff0c;如下圖所示&#xff0c;本次操作均為api16 2&#xff09;創建Library&#xff0c;如下圖所示&#xff0c;新建module&#xff0c;然后選擇Android Library。 新建模塊為…

centeros7安裝mysql - 風中追風_lonely - 博客園

轉載自&#xff1a;https://www.linuxidc.com/Linux/2016-09/135288.htm 安裝之前先安裝基本環境&#xff1a;yum install -y perl perl-Module-Build net-tools autoconf libaio numactl-libs 1、配置YUM源 在MySQL官網中下載YUM源rpm安裝包&#xff1a;http://dev.mysql.c…

失物招領平臺6

昨天做了什么&#xff1a;學習了復選框、列表視圖、網絡視圖&#xff0c;集體討論了登錄頁面的構思 今天準備做什么&#xff1a;繼續學習Android stdio&#xff0c;改善登錄頁面 遇到的問題&#xff1a;時間遠遠不夠。轉載于:https://www.cnblogs.com/sljslj/p/11056074.html

前后端交互json字符串

//將需要的參數轉成json字符串&#xff0c;然后用utf-8編碼 var obj encodeURIComponent(JSON.stringify(this.categories),"utf-8") //后臺將前臺的json字符串按照utf-8的格式解碼&#xff0c;然后進行轉換 RequestMapping(value "/updateMaterialDemoInfo.d…

CSS布局解決方案(終結版)

前端布局非常重要的一環就是頁面框架的搭建&#xff0c;也是最基礎的一環。在頁面框架的搭建之中&#xff0c;又有居中布局、多列布局以及全局布局&#xff0c;今天我們就來總結總結前端干貨中的CSS布局。 居中布局 水平居中 1&#xff09;使用inline-blocktext-align &…

個人作業7 第一階段SCRUM沖刺(七)

了解了一下云服務器&#xff0c;下載了阿里云。 然而搞了半天還是沒應用上這個云服務器..轉載于:https://www.cnblogs.com/jbwen/p/11071733.html

Dcloud HTML5 監聽藍牙設備 調用 原生安卓實現 - aspirant - 博客園

最近一直搞Dcloud &#xff0c;這是HTML5版本的開發&#xff0c;打包時候&#xff0c;可以打包成 apk 和ipa 分別運行在安卓和ios 機器上面&#xff0c; 但是這里面的資料很少&#xff0c;遇到問題&#xff0c;之后只能自己鉆研總結&#xff0c; 現在有這么一個需求&#xff…

NOIP2018游記

NOIP 2018 游記 又是一年 \(NOIP\) 呢...第二次參加了,希望這一次能不再擦線吧...畢竟我真的很想去 \(WC\) ,也很想去省選. 最后悔的事就是在初三了,恰逢直升,大好年華,停課學 \(OI\) ,但我竟然在某兩位 \(dalao\) 帶領下搓了一年 爐石 \(\& \: SC2\) &#xff1f;&#xf…

四葉草社交平臺——十天沖刺(5)

今天沒能安排好各種的任務&#xff0c;姑且拍了張照片就散了。 我的任務就是把登錄功能完成&#xff0c;先讓其他人把資源載入問題解決了&#xff0c;然后我再看看動態如何發送。 轉載于:https://www.cnblogs.com/limitCM/p/10925161.html

Django forms組件

校驗字段 模板文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form action"" method"post"><p>用戶名: <…

為什么要用TypeScript - 肉豬 - 博客園

為什么要用TypeScript 以下是本人的一點拙見&#xff0c;歡迎指正。 TypeScript的設計目的應該是解決JavaScript的“痛點”&#xff1a;弱類型和沒有命名空間&#xff0c;導致很難模塊化&#xff0c;不適合開發大型程序。另外它還提供了一些語法糖來幫助大家更方便地實踐面向…

java繼承上機作業

實現如下類之間的繼承關系&#xff0c;并編寫Music類來測試這些類。 1 package su;2 3 class Instrument{4 public void play() {5 System.out.println("彈奏樂器");6 }7 8 public void play2() {9 // TODO 自動生成的方法存根 10 …

自定義標簽的作用

1&#xff09;控制標簽體內容是否輸出 2&#xff09;控制標簽余下內容是否輸出 3&#xff09;控制重復輸出標簽體內容 4&#xff09;改變標簽體內容 5&#xff09;帶屬性的標簽 package com.loaderman.demo.a_tag;import java.io.IOException; import java.io.StringWriter;imp…

前端之模擬數據 - HackerVirus - 博客園

閱讀目錄 玩轉前端之模擬數據 回到目錄 玩轉前端之模擬數據 博客園主頁&#xff1a;http://www.cnblogs.com/handoing/ 是否還在為前端模擬數據頭疼&#xff1f; 是否還在為后端返回數據格式較多內心煩躁&#xff1f; 是否還想吸一支煙壓壓精&#xff1f; 看下去吧&#x…

Leetcode No.146 ****

運用你所掌握的數據結構&#xff0c;設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作&#xff1a; 獲取數據 get 和 寫入數據 put 。 獲取數據 get(key) - 如果密鑰 (key) 存在于緩存中&#xff0c;則獲取密鑰的值&#xff08;總是正數&#xff09;&#xff…

三元運算符運算(Day02)

三元運算符運算(Day02) 運算符&#xff1a;用來對常量或者變量連接的符號&#xff0c;稱為運算符。表達式&#xff1a;用運算符連接起來的整個式子成為表達式。比如&#xff1a;a10,1020運算符有以下五種&#xff1a;1、算術運算符2、賦值運算符3、關系運算符4、邏輯運算符5、三…

JS正則表達式驗證數字非常全 - 吾心無所 - 博客園

JS正則表達式驗證數字非常全 Js代碼 <script type"text/javascript"> function SubmitCk() { var reg /^([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]\.[a-zA-Z]{2,3}$/; if (!reg.test($("#txtEmail").val())) {…