jmeter(四十五)常用Beanshell脚本
生活随笔
收集整理的這篇文章主要介紹了
jmeter(四十五)常用Beanshell脚本
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
整理了一批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){ }下載文件
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();?
保存響應(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ù)庫
import java.sql.*; import java.util.*; import java.lang.*; import org.apache.regexp.*; import org.json.*; //一:數(shù)據(jù)庫取值 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ù)庫失敗"; }浮點(diǎn)時(shí)間戳轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間
?
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; //10位的秒級(jí)時(shí)間戳 long time1 = ${time};//獲取時(shí)間戳變量 String result1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time1 * 1000)); log.info("10位時(shí)間戳(秒)--->Date:" +result1);//13位的毫秒級(jí)時(shí)間戳 //double time2 = 1515730332000d; //String result2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time2); //System.out.println("13位數(shù)的時(shí)間戳(毫秒)--->Date:" + result2);?
?
解析jsonlist
利用beanshell獲取到json響應(yīng),然后通過JSONObject 和JSONArray 將數(shù)組解析,遍歷數(shù)組的length之后,提取參數(shù)值
我們需要解析如下的json響應(yīng),提取出中間的Name和population
//導(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ì)象,能通過這個(gè)對(duì)象獲取想要的信息。3.Response 獲取Response對(duì)象,能通過這個(gè)對(duì)象獲取響應(yīng)信息。4.Failure 查看接口調(diào)使用能否成功,假如返回false是成功的,true是失敗的。5.FailureMessage 失敗信息,沒有設(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。?調(diào)用cmd文件
String command = "cmd /c start D:\\apache-jmeter-3.2\\負(fù)載.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);?
轉(zhuǎn)載于:https://www.cnblogs.com/Zfc-Cjk/p/10842307.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的jmeter(四十五)常用Beanshell脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中银爱心公益信用卡好不好?相关信息大盘点
- 下一篇: Apple Pay添加工行信用卡失败是怎