之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢?
其实我们可以将用例的数据存放在 csv 文件中,然后通过 csv 文件配置来读取用例中的数据,执行测试。用例数据如下图所示:
用例设计
创建用例文件:login.csv
保存目录C:\jmeter\apache-jmeter-5.0\bin\parameter\login.csv,csv数据设置文件中要用到这个路径
用例名称含义:
Name 接口名称 ${Name}
CaseNo 用例编号 ${CaseNo}
Priority 优先级 ${Priority }
Type 请求方法 ${Type}
Url 域名 ${Url}
Param 参数 ${Param}
Assertion 断言值 ${Assertion}
Jmeter设置步骤:
1、新建一个线程组,命名为:数据驱动
2、创建一个 HTTP请求默认值放域名、HTTP信息头管理器放头信息,供所有接口共用,如图:
3、添加循环控制器
线程组——添加——逻辑控制器——循环控制器。 循环控制器的作用可以控制整个用例循环执行的次数。默认值是 1 根据用例数量可以修改为 8,循环8次
4、在循环控制器节点下创建 CSV 文件设置
循环控制器—添加—CSV 数据文件设置,循环读取excel用例数据的每个字段,具体配置内容如下:
5、创建 if 控制器,步骤为:循环控制器——添加——逻辑控制器——if 控制器()
if 控制器的作用判断用例优先级,可以选取性执行
条件语句为:"${Priority}"=="H"其中 ${Priority}表示引用 csv 中的 Priority中的值。
6、创建两个 if 控制器,步骤为:优先级控制器——添加——逻辑控制器——if 控制器
if 控制器的作用为根据不同请求方式执行不同的请求,例如这里根据不同的接口请求类型,分别创建了 GET 和 POST 两个控制器。
GET 设置的条件语句如下:
条件语句为:"${Type}"=="get"其中 ${Type}表示引用 csv 中的 Type中的值。
POST 设置的条件语句如下:
POST 条件语句设置为:"${Type}"=="post"其中 ${Type}表示引用 csv 中的 Type中的值
7、GET 和 POST 两个控制器下分别添加采样器、断言、结果树
8、创建请求类型设置
创建 GET 请求类型的用例如下:
用例名称格式:${Name}_${CaseNo} 接口地址_用例编号
接口路径:${Name}?${Param} 接口地址?参数
创建 POST 请求类型的用例如下:
POST 用例设置和 GET 类似,不过参数请求不一样,是在 body 中,如果发送的是json格式的参数
用例名称格式:${Name}_${CaseNo} 接口地址_用例编号
接口路径:${Name} 接口地址
消息体:${Param} 参数
9、设置断言
GET请求喝POST请求下分别设置断言${Assertion} =cvs中Assertion
10、查看GET和POST请求接口传参
GET:
http://www.baidu.com/1.0/users/login?username=1
POST:
http://www.baidu.com/1.0/users/login
{"username":2}
这样简单的操作就实现了Jmeter接口自动化的数据分离,简单的Jmeter配置+csv用例数据