jmeter中脚本数据分离并生成报告

目的

测试项目的接口通过csv文件整理后,通过jmeter配置调用该文件已实现接口自动化并生成对应HTML报告。该方法能够快速的做接口回归,便捷的脚本维护(只需修改csv文件对应信息即可),能高效的实现非代码的接口自动化。

思路梳理

1.创建全局ip及端口,所有接口URL拼接时前半段自动添加。

2.添加全局信息头(head),接口请求时带入该head。

3.创建登录请求并获取token以便后面接口全局调用。

4.新增线程除添加csv配置后,在csv中做好字段分类,然后供调用。

5.添加if控制器针对接口类型做分类

6.执行对应非GUI命令后生成报告

实现步骤

1、首先创建公共的请求地址。

2、创建HTTP信息头管理器,填写公共的且必须的head信息。可以在登录时查看到,逐步填写完整。

 

 

 

 3、创建setUp(登录)线程组,保持默认值即可,因为再执行接口自动化或者性能测试时,登录只需要一次即可。所以这里线程数及循环次数都为1

 

 

 

 4、在setUp下新建HTTP登录请求,并添加正则提取器提取登录后的token。这里的传参用了【消息体数据】,在填写时注意搞清楚接口报文的传输格式时data还是json串。

 

 在请求下添加响应断言判断登录是否成功。添加正则提取器,获取token值,并添加后置处理器Debug PostProcessor以便观察提取内容是否正确。

 

正则提取器:

 

正则表达式为"token":"(.+?)",表示获取字段为token的全部内容

 

 

后置处理器Debug PostProcessor

默认即可,用于察看提取内容

 

 

察看结果树:

可以看到提取的token内容

5、在请求的中添加BeanShell取样器来配置token作为全局变量使用。

${__setProperty(newtoken,${token})}

6、重新创建一个线程组,并添加信息头管理器填写请求中所需的键值对,token${__property(newtoken)}(上个线程组添加的全局变量)

 

 7、接着并行添加循环控制器来控制csv调用的次数,这里选择循环次数为“永远”,配合设置CSV文件设置,可根据文件行数来添加请求数。

 

 8、在该控制器下添加配置原件“CSV数据文件设置”,先创建csv文件按整理的接口创建对应字段并添加必填参数及断言内容。

 

 在配置原件中填写与文件字段对应的信息。其中变量名用西文逗号隔开,其他的选项按需要填写即可。

 

 

 

 

 9、在循环控制器下添加一个if控制器,按条件来执行csv文件中的数据。这里条件的语法格式注意"${priority}" == "H"

 

 

 

 10、if控制器下按接口类型再次分别添加if控制器,这里按GETPOST做了两类,添加两个控制器即可,同样的条件语句写法。

 

 

 

 

 

 

 配置GET请求参数,名称按自己的习惯参数化拼接名字,请求路径同样按参数化拼接即可。

因为GET请求是在URL后面拼接的param,所以这里是直接在路径中吧urlparameter引用拼接了。

 

 

 

 配置POST请求参数同理,只是在url和参数上有所不同。

断言可添加一个或多个,可根据接口的报文来制定断言内容,这里断言字段有两个。

 

 

 

 

 

**POST的接口只能读取parameter中的一个字段内容,还无法读取json串,还需优化。(有解决方案的欢迎指点!)

至此jemter的数据准备工作已经完成,接口也按接口文档调试成功。报告当前用的是jmeter自带的报告生成模板Dashboard

在非GUI模式下,首先进入数据存放的目录。

执行jmeter -n -t **(脚本).jmx -l .\reports\result.jtl生成jtl文件,删除reports目录下文件后再执行jmeter  -g .\reports\result.jtl -o .\reports\result.html,生成的测试报告就很直观的看到了,只是对于报错的接口,还没做错误日志的打印和记录,待后期优化脚本。

 

 

 

 

 

 

 

 

 

 

posted @ 2020-03-31 11:51  liuyi1804  阅读(531)  评论(0编辑  收藏  举报