日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

beanshell断言_JMeter使用BeanShell断言

發(fā)布時間:2023/12/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 beanshell断言_JMeter使用BeanShell断言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

BeanShell簡介

BeanShell是使用Java語法的一套腳本語言,在JMeter的多種組件中都有BeanShell的身影,如:

定時器:BeanShell Timer

前置處理器:BeanShell PreProcessor

采樣器:BeanShell Sampler

后置處理器:BeanShell PostProcessor

斷言:BeanShell Assert

監(jiān)聽器:BeanShell Listener

通過BeanShell可以對請求數(shù)據(jù)、響應(yīng)數(shù)據(jù)或環(huán)境變量進行更加靈活的處理和判斷。

Beanshell有一些默認的內(nèi)置變量和方法,用戶可以通過這些變量與JMeter進行交互,比如:

prInt:非GUI模式下打印信息(輸出信息到stdout)

log:輸出信息到日志(文件)

log.debu("調(diào)試信息")

log.info("響應(yīng)狀態(tài)碼" + ResponseCode)

log.warn("警告信息")

log.error("出錯信息")

ResponseCode:響應(yīng)狀態(tài)碼(String類型)

ResponseHeaders:響應(yīng)頭(String類型)

prev:獲取當前請求結(jié)果

prew.getResponseDataAsString():獲取響應(yīng)體數(shù)據(jù)(String類型)

prew.getResponseCode():獲取狀態(tài)碼(同ResponseCode,String類型)

vars: 操作jmeter變量

String var1 = vars.get("變量名"):獲取變量的值(假設(shè)為String類型)

vars.put("變量名", 變量值):設(shè)置變量值

props: 操作JMeter屬性

props.get(String,String) 可以獲取Jmeter中已經(jīng)生成的屬性

props.put(String,String) 可以創(chuàng)建和更新Jmeter屬性

ctx:獲取當前線程上下文數(shù)據(jù)(可獲取所有信息)

ctx.getVariables("變量名"):獲取變量值(同vars.get())

ctx.setVariables("變量名", "變量值"):設(shè)置變量(同vars.put())

ctx.getProperties("屬性名"):獲取屬性值(同props.get())

ctx.setProperties("屬性名","屬性值"):設(shè)置屬性(同props.put())

ctx.getPreviousResult():獲取當前請求結(jié)果同(prev)

ctx.getCurrentSampler():獲取當前采樣器

ctx.getPreviousSampler():獲取前一采樣器

ctx.getThreadNum():獲取線程數(shù)

ctx.getThreadGroup():獲取線程組

ctx. getThread():獲取當前線程

ctx.getEngine():獲取引擎

ctx.isSamplingStarted():判斷采樣器是否啟動

ctx.isRecording():判斷是否開啟錄制

ctx.getSamplerContext():獲取采樣器山下文數(shù)據(jù)

ctx詳細API可參考:JMeter上下文

BeanShell斷言

BeanShell斷言中可以通過ResponseCode、ResponseHeaders及pre.getResponseDataAsString()來分別獲得String格式的響應(yīng)狀態(tài)碼、響應(yīng)頭、響應(yīng)體數(shù)據(jù),結(jié)合if判斷通過變量Failure=false或Failure=true來設(shè)置斷言是否通過,當設(shè)置Failure=true時,還可以設(shè)置FailureMessage來設(shè)置失敗原因。

狀態(tài)碼斷言

//狀態(tài)碼斷言

log.info("狀態(tài)碼:" + ResponseCode);

if(ResponseCode.equals("200")){

Failure=false;

}

else{

Failure=true;

FailureMessage="響應(yīng)狀態(tài)碼非200"; //指定失敗原因

}

注:字符串只能使用雙引號,字符串相等要使用"".equals("")

響應(yīng)體包含特定字符

//獲取響應(yīng)數(shù)據(jù)

String response = prev.getResponseDataAsString();

log.info("響應(yīng)體:" + response);

//響應(yīng)數(shù)據(jù)包含

if(response.contains("登錄成功")){

Failure=false;

}

else{

Failure=true;

FailureMessage="響應(yīng)數(shù)據(jù)不包含登錄成功";

}

JSON響應(yīng)體字段提取及斷言

將String類型的響應(yīng)體轉(zhuǎn)為JSON對象并操作需要額外的jar包,可以使用org.json或gson,下載地址如下:

json.jar:下載地址 密碼:8it7

gson.jar:下載地址 密碼:6a7v

以json.jar為例,下載后將其放入JMeter/lib目錄下,重啟JMeter,添加BeanShell斷言,如下:

//JSON響應(yīng)斷言

import org.json.*; //導(dǎo)入org.json包

String response = prev.getResponseDataAsString(); //獲取響應(yīng)數(shù)據(jù)

JSONObject responseJson = new JSONObject(response); //轉(zhuǎn)為JSON對象

String message = responseJson.getString("message");

log.info("響應(yīng)message字段:" + message);

if(message.equals("成功")){

Failure=false;

}

else{

Failure=true;

FailureMessage="響應(yīng)message字段非成功";

}

JSONObject對象除了getString()方法外,還支持

getBoolean("字段名") :獲取布爾類型字段值

getInt("字段名"):獲取整型字段值

getLong("字段名"):獲取長整型字段值

getDouble("字段名"):獲取雙精型字段值

getJSONObject("字段名"):獲取嵌套Object類型字段值,JSONObject類型

getJSONArray("字段名"):獲取嵌套Array類型,JSONArray類型

響應(yīng)頭解析

響應(yīng)頭原本為String類型,可以通過分割遍歷組裝成Map類型來提取響應(yīng)頭中的項

import java.util.HashMap;

import java.util.Map;

//將字符串用換行符 截取為adc數(shù)組

String [] headersList = ResponseHeaders.split("\n");

Map headersMap = new HashMap(); //創(chuàng)建HashMap來從新組裝headers

for(int i=1;i

String [] itemList=headersList[i].split(": "); // 將每一條Headerr項按冒號分割

headersMap.put((itemList[0]), itemList[1]); // 分鍵值放入HashMap

}

String contentType = headersMap.get("Content-Type"); // 提取相應(yīng)項

log.info("響應(yīng)Content-Type:" + contentType)

總結(jié)

以上是生活随笔為你收集整理的beanshell断言_JMeter使用BeanShell断言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。