溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

jmeter常用Beanshell腳本

發(fā)布時(shí)間:2020-07-13 12:51:10 來(lái)源:網(wǎng)絡(luò) 閱讀:1060 作者:ufuhz2008 欄目:軟件技術(shù)

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

時(shí)間戳

import?java.text.SimpleDateFormat;
import?java.util.Calendar;
import?java.util.Date;
try{
Date?date?=new?Date();?//獲取當(dāng)前時(shí)間
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);?//參數(shù)可以調(diào)用
vars.put("senderDate",senderDate);?//參數(shù)可以調(diào)用
}
catch(Exception?e){
}

jmeter常用Beanshell腳本


下載文件

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();

jmeter常用Beanshell腳本

保存響應(yīng)內(nèi)容

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?=?"斷言失敗";
}

連接數(shù)據(jù)庫(kù)

import?java.sql.*;
import?java.util.*;
import?java.lang.*;
import?org.apache.regexp.*;
import?org.json.*;
//一:數(shù)據(jù)庫(kù)取值
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?='測(cè)試項(xiàng)目'??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?=?"連接數(shù)據(jù)庫(kù)失敗";
}

解析jsonlist

利用beanshell獲取到json響應(yīng),然后通過(guò)JSONObject?JSONArray?將數(shù)組解析,遍歷數(shù)組的length之后,提取參數(shù)值

我們需要解析如下的json響應(yīng),提取出中間的Namepopulation

jmeter常用Beanshell腳本

//導(dǎo)入json包
import?org.json.*;
//獲取獲取請(qǐng)求的返回值
String?response_data?=?prev.getResponseDataAsString();?
//日志打印獲取請(qǐng)求的返回值
log.info(response_data);
//將String類型的返回值構(gòu)造成JSONObject對(duì)象
JSONObject?data_obj?=?new?JSONObject(response_data);
//獲取作為下一個(gè)請(qǐng)求post的參數(shù)值Province(兩種方式)
//String?Provincelist_str?=?data_obj.get("Province").toString();?
JSONArray?Provincelist_str?=?data_obj.getJSONArray("Province");
//log.info(Provincelist_str);
//獲取Province數(shù)組的長(zhǎng)度
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?]?數(shù)組對(duì)象
JSONObject?jsonTemp?=?(JSONObject)Provincelist_str.getJSONObject(i);
switch(i)
{
case?0:
//兩種提取參數(shù)的寫法
String?NameItems?=?jsonTemp.getString("Name");
//?String?NameItems?=?jsonTemp.get("Name").toString();
//?兩種打印參數(shù)的方法
//?vars.put("Name_1",?jsonTemp.getString("Name"));?
vars.put("Name_1",?NameItems);?
log.info(NameItems);
}
}

遞歸創(chuàng)建多級(jí)目錄

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("創(chuàng)建文件夾路徑為:"+?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();?
????????????}

常用內(nèi)置變量

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


?調(diào)用cmd文件

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

GUI小命令

1
2
3
4
5
button =?new?JButton(?"登錄"?);
frame =?new?JFrame(?"My Frame"?);
frame.getContentPane().add( button,?"Center"?);
frame.pack();
frame.setVisible(true);


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI