整理了一批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){ }
下載文件
1
2
3
4
5
6
7
|
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();
|
保存響應內容
1
2
3
4
5
6
|
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();
|
斷言
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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 =
"斷言失敗"
;
}
|
鏈接數據庫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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 =
"鏈接數據庫失敗"
;
}
|
浮點時間戳轉換爲標準時間
1
2
3
4
5
6
7
8
9
10
11
12
|
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以後,提取參數值html
咱們須要解析以下的json響應,提取出中間的Name和populationjava
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
//導入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);
}
}
|
遞歸建立多級目錄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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。<br><br>
|
調用cmd文件
1
2
3
|
String command =
"cmd /c start D:\\apache-jmeter-3.2\\負載.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
);
|