使用jmeter实现接口监控,当接口出错时邮件报警

一、工具

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

 

posted on 2018-08-05 10:40  MING_FBUG  阅读(1778)  评论(2编辑  收藏  举报

导航