Jmeter使用csv文件读取测试数据
最近有同事在测试过程中遇到需要造批量测试数据的问题,这些数据往往是同一种单据,但是单据的内容不同,如果手工创建就比较费时费力。那我们用jmeter的csv文件来读取测试数据就完美解决了这个问题。
我们今天使用Jmeter5.1.1调用博客园的开放API来举例,接口信息如下:
获取新闻内容
Url: http://wcf.open.cnblogs.com/news/item/{CONTENTID}
HTTP Method: GET
csv文件准备
- 新建一个文本文档,然后把后缀.txt改成.csv,使用notepad或者记事本打开(这里使用的是notepad)
- 将我们的批量测试数据 CONTENTID(新闻Id)写进来
添加CSV数据文件设置
- 添加CSV数据文件设置:打开jmeter -> 右键测试计划 -> 添加配置元件 -> CSV 数据文件设置
创建HTTP请求
- 创建HTTP请求:打开Jmeter -> 右键测试计划 -> 添加-线程-线程组 -> 右键线程组 -> 添加-取样器-HTTP请求
- 添加查看结果树:右键HTTP请求 -> 添加-监听器-查看结果树
- 将上面的接口信息复制到HTTP请求中,一切准备就绪如下图:
运行并查看结果
-
设置线程数和循环次数后启动(这里我设置的是1个线程循环15次):
-
查看结果树,发现的CONTENTID已经是CSV数据文件中的数据了,响应数据就是对应Id的内容。
最后,我们回到开始的问题,造大量的不同内容的相同单据。我们使用CSV文件来存不同的内容,使用jmeter来循环调用创建数据的接口,这样就不用手动再去创建单据了,既省时又省力。
CSV文件设置参数说明:
参数 | 说明 |
---|---|
文件名 | 你的CSV数据文件的路径 |
文件编码 | 例如可以是UTF-8。那么jmeter就会以UTF-8读取文件 |
变量名称 | 以逗号分隔的名称列表,它与CSV文件中的列相匹配。 |
忽略首行 | 如果第一行是列名而不是测试数据,就选择True忽略掉列名 |
分隔符 | 默认为','也可以设置为其他值(建议使用默认) |
是否允许带引号 | 默认为False,如果测试数据中带有引号则设置为Ture |
遇到文件结束符再次循环 | 默认为True,意思读完最后一行在回来读取第一行 |
遇到文件结束符停止线程 | 读完最后一行停止线程 |
线程共享模式 | 定义如何在并发线程之间分配值 |