【JMeter】HTTP请求示例以及事务控制器的使用

背景

  在平常开发中,Jmeter一般用得多的可能是对单个接口进行。不过排除在开发中会遇到这样的需求,就是一个业务需要先调用一个接口获取相关数据后,作为下一个接口调用的参数,此时接口间的调用是有时序的,在Jmeter测试此类业务时,就需要用到其中的【事务控制器】。

  下面记录一项调用小程序二维码的过程,主要的实现是两个接口:

  1.  调用 auth.getAccessToken 接口获取 access_token ;
  2.  用上面获取的 access_token 调用 wxacode.createQRCode。

  相关接口说明文档的连接:

  https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html

  https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.createQRCode.html

 

JMeter

添加线程组

  新打开的JMeter界面中,只有一个默认的【测试计划】,我们需要在【测试计划】中添加一个【线程组】:

  

 

 添加用户定义的变量

  【用户定义的变量】可设置一些变量数据用于后面测试的请求中引用:

  

   看上面的图,要选第一个才是在环境中设置一些变量,至于另外一个,是设置一个全局的请求参数,每个测试的请求都会带上其中设置的变量数据。

  在这里,我们把小程序的AppID和Secret (可通过小程序测试号申请) 保存在变量列表里:

  

 

 

 

添加事务控制器

  到此就是关键点,多个请求形成顺序执行的一个事务,就需要一个【事务控制器】来管理,故在【线程组】中添加一个【事务控制器】:

  

  后面的就和添加单个测试请求一样的,事务中具体的执行顺序是从上往下走的。

添加HTTP请求

  【HTTP请求】的添加如下:

  

 

 

 

  auth.getAccessToken

  auth.getAccessToken接口测试的相关参数设置如下:

  

 

 

   从上图中,可以看到在请求参数列表里,appid和secret字段不是一个具体的值,而是对【用户定义的变量】列表中的变量进行引用。

  察看结果树

  启动前记得添加【监听器】的【察看结果树】,不然无法观察测试请求后的结果:

  

  启动测试

  

  添加JSON提取器

  在上一步,启动了测试,也成功从接口返回了相关数据,但这样的结果我们是没办法使用的,如要使用接口返回的数据,我们还要添加一些接口的【后置处理器】,这里从结果看都知道是需要一个【JSON提取器】:

  

 

  有了【JSON提取器】,我们还要配置提取器从结果中提取那些参数数据:

  

  Names of created variables:提取后的变量名,可提取多个元素,则参数名称写多个,用英文分号分开;

  JSON Path expression:json提取器语法用英文分号隔开,应当与参数名称一一对应

  Match No.(0 for Random):匹配编号一样的需要用英文分号隔开,与参数名称一一对应

  Default Values:默认值同样用英文分号隔开,与参数名称一一对应

  设置成功就可以在后续的请求中,像引用【用户定义的变量】列表里的变量一样引用了。

  wxacode.createQRCode

  

 

  从上图看,在【路径】中引用了前面一个接口返回的access_token;

  添加HTTP请求的头部信息

  因为这个请求是POST方式的,而且消息体的数据是JSON格式的,故要想调用成功还需要请求体的头部信息:

  

 

  并设置Content-Type的值:

  

 

  

 

 添加事务【察看结果树】

  到了上面一步,其实已经完成了接口调用的所有设置了,但为了察看此事务的执行结果,可在【事务控制器】下添加一个【察看结果树】,具体操作不说了。

  最后的结果:

  

 

 

 

 

 

 

   

 

 

 

 

  

posted @ 2020-11-08 18:02  dilex  阅读(586)  评论(0编辑  收藏  举报