一、工具
Jmeter 3.3
下載地址:https://pan.baidu.com/s/1LwW4QV0xeQ-7e1X9bOBCog
二、目錄結構預覽

三、設計思路
1、 發送http請求,對返回碼和響應數據進行校驗
2、 利用if控制器的判斷條件來執行是否發送郵件
3、 發送報警郵件,郵件中包括請求的接口url、返回碼、響應數據、響應信息
四、腳本編寫和變量設置
1、 預設置全局變量

Sendemail:是否發送郵件的標識,默認值為no,no代表不發送郵件,yes代表發送郵件。
respcode:存放請求的返回碼,發郵件時使用
respmsg:存放請求的響應信息,發郵件時使用
respdata:存放請求的響應數據,發郵件時使用
info1:存放接口的報錯信息,當返回碼不為200時使用
info2:存放接口的報錯信息,當校驗的信息為空時使用
2、 使用jp@gc - JSON Path Extractor或正則表達式提取器提取需要校驗的響應數據
2.1、對應的請求下添加一個jp@gc - JSON Path Extractor或正則表達式提取器

2.2、如下圖所示,將獲取的值存放到變量data1中

3、beanshell斷言腳本編寫
3.1、當前http請求下添加一個beanshell斷言

3.2、腳本編寫
//設置接口的名稱,用於郵件的標題使用
//獲取變量中設置的接口請求錯誤的提示信息
String info1 = vars.get("info1");
String info2 =vars.get("info2");
//獲取提取器取到的數據
String data1 = vars.get("data1");
String code = SampleResult.getResponseCode();//獲取返回碼
String msg = SampleResult.getResponseMessage();//獲取響應信息
String data = SampleResult.getResponseDataAsString();//獲取響應數據
String url = SampleResult.getUrlAsString();//獲取請求接口的url地址
//校驗返回的code,非200發郵件報警;返回200則校驗返回數據是否為空,為空則發郵件報警
if(!(code.equals("200"))){
vars.put("sendemail","yes");//將sendemail值置為yes,代表發送報警郵件
vars.put("error_info",info1);
}
else{
if(!(data1.equals(""))){
vars.put("sendemail","no");//將sendemail值置為no,代表不發送報警郵件
}
else{
vars.put("sendemail","yes");//將sendemail值置為yes,代表發送報警郵件
vars.put("error_info",info2);
}
//將發送郵件所需的值賦給相應的變量
vars.put("respcode",code);
vars.put("respmsg",msg);
vars.put("respdata",data);
vars.put("url",url);
vars.put("interface_name",interface_name);
五、 郵件發送
1、 使用if控制器,判斷是否發送郵件
1.1添加if控制器

1.2設置判斷條件

如上圖所示,表示當sendemail值為yes時需要發送報警郵件
2.使用SMTP Sampler發送郵件
2.1在if控制器中添加SMTP Sampler

2.2郵箱配置,配置信息可能會更換,可以對配置進行參數化

Address_from:郵箱發件人設置
Address_to:郵箱收件人設置,有多個收件人,使用“;”隔開
Server:配置發件郵箱的服務器地址;如126郵箱為smtp.126.com
Port:端口號,smtp設置為25
收到郵件的效果:

2.3發件人的郵箱需要開啟smtp並設置客戶端授權密碼(web中登陸發件人郵箱,到設置中開啟smtp並設置授權碼)

六、公共模塊的使用
1、將需要多次使用的模塊,放到一個簡單控制器中,並把簡單控制器禁用

2、 通過模塊控制器調用

參考博客:https://www.cnblogs.com/tina19882010/articles/7908834.html
