一、工具
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、 使用[email protected] - JSON Path Extractor或正则表达式提取器提取需要校验的响应数据
2.1、对应的请求下添加一个[email protected] - 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
原文地址:https://www.cnblogs.com/MING-FBUG/p/9424708.html