JMeter教程:使用CSV文件完成批量接口测试

JMeter教程:使用CSV文件完成批量接口测试,第1张

        当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多。而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等各种场景来进行测试接口是否能够正确返回所需的响应值。如果需要进行回归测试,则工作量则更大了。如果只需要使用一份CSV文件完成所以的接口测试,那就更方便且更好管理接口。

        那么我们该如何通过JMeter来完成批量测试呢? 我们先建立一个较为简单的方式进行测试脚本观察一下。

        以一个获取创建订单时的【省/市/区信息】接口:api.test.XXXXXX.com/api/XXXX/XXXX/getAddress 请求方法:post 请求参数:type,code为例:

1.添加线程组

    测试计划右键选择添加——线程用户——线程组。

     Setup线程组: 用于执行预测试 *** 作

     tearDown: 用于执行测试后 *** 作

     线程组: 一般测试接口时添加的线程,可以把它看做一个虚拟的用户组,线程组中的每一个线程都可以理解为一个虚拟用户

2.添加HTTP信息头管理器

     线程组右键选择添加——配置元件——HTTP信息头管理器

    如果接口信息头定义了值的话,需要放到信息头管理器里面,例如:用户token,公共参数等。

3.添加HTTP请求

     线程组右键添加——取样器——HTTP请求

     协议: 默认HTTP协议,可不填写,若为HTTPS协议需要填写HTTPS。

     服务器名称或IP: 填写接口域名

     端口号: 默认HTTPS请求的80,若为HTTPS请求需要填写443

     方法: 直接选择接口的请求方法:GET,POST,PUT,DELETE即可。

     路径: 填写接口的具体路径    

     参数: 点击下方导航栏添加按钮,在已经添加的数据栏填写参数名,参数值。    

4.添加察看结果树

     线程组右键添加——监听器——察看结果树

    左边:展示请求名,绿色请求结果表示请求成功,红色请求结果表示请求失败。

    右边:展示请求值,包括取样器结果,请求头,请求体,响应头,响应体。

以上步骤能够确保接口正确的进行访问并返回对应的返回值。

完成以上步骤后,下一步就是要把上面步骤的所有的值以参数的形式传递给JMeter脚本,使我们能够以参数化的形式对接口进行批量测试。

5.添加循环控制器罩逗

     线程组右键添加——逻辑控制器——循环控制器,循环控制器添加后需要把【HTTP信息头管理器】【HTTP请求】移到【循环控制器下】

    循环改猜次数:运行脚本后循环控制器下的HTTP请求将执行的次数。例如:循环控制器的计数为1,则发送HTTP请求1次;计数为5,则发送HTTP请求5次。设置为永远则需要手动停止请求,否则不会停止请求。

6.在循环控制器下添加CSV配置文件

     循环控制器右键添加——配置元件——CSV数据文件设置,CSV文件里面定义接口所需要动态取值的参数,例如:URL,路径,请求方法,接口参数等。

a)如何创建CSV文件?电脑桌面新建TXT文档,更名为:测试参数文档.CSV(TXT后缀需要变更为CSV),打开CSV文件新增数据。

b)文件内参数如何书写?第一行定义接口所需动态参数,自第二行起填写接口详细值。

caseSeq: 定义接口序号

apiSeq: 每个接口序列

apiName: 接口名称

url: 接口域名

api: 接口地址

function: 接口请求方法

purpose: 描述接口验证类型

parameter: 接口所需参数拼接,以:“code=500000&type=city”的形式,参数间以“&”连接

c)csv数据文件如何设置

文件名: 点击浏览后物歼卖选择本地的CSV文件

文件编码: 一般情况下无需设置

变量名称:

“caseSeq,apiSeq,apiName,url,api,function,purpose,parameter”,参数之间需要用英文的逗号隔开,注意参数不要写错。

忽略首行: True则不执行CSV文件的首行,False则执行CSV文件首行。

分隔符: 英文逗号,无需变更

是否允许带引号: 设置True和False以当前CSV文件都能正常执行

遇到文件结束符再次循环: True则在设置的循环次数内一直循环,False则CSV文件所有数据循环一次后就停止。

遇到文件结束符停止线程: True则在设置的循环次数内执行到CSV文件数据为空时停止发送HTTP请求,False则在设置的循环次数内执行到CSV文件数据为空时继续执行。

线程共享模式: 选择所有现场即可

综上: 本次CSV文件设置时:循环次数“永远”,忽略首行“True”,是否允许带引号“False”,遇到文件结束符再次循环“False”,遇到文件结束符停止线程“True”,线程共享模式“所有现场”

7.其他配置文件需要修改写入形式

     HTTP信息头管理器:除必要参数外,添加:“Content-Type=application/x-www-form-urlencoded”,使用Json参数需要用到

HTTP请求:名称设置为:“${caseSeq}_${apiSeq}_${apiName}”动态取CSV文件里面配置的参数信息;IP:“${url}”;方法:“${function}”;路径:“${api}”,消息体数据:“${parameter}”消息体数据和参数只能设置一种,不能两种同时设置。

8.执行CSV文件,查看结果

     可以看到左边能够很清晰的反应接口执行的信息,右边可以很明确的反应接口返回的数据。并且CSV文件内可以设置众多接口的不同验证方式,很方便且很适合日常工作使用。希望以上内容能给大家提供帮助,谢谢。

You may wish to consume your Locust results via a CSV file. In this case, there are two ways to do this.

你可能需要将 Locust 结果 导出为 CSV 文件,有两种方法可以执行此 *** 作。

First, when running Locust with the web UI, you can retrieve CSV files under the Download Data tab.

首先,当使用 Web UI 运行 Locust 时,你可以通过 Download 页面提取到 CSV 文件。

Secondly, you can run Locust with a flag which will periodically save three CSV files. This is particularly useful if you plan on running Locust in an automated way with the --headless flag:

其次,如果你用的是没有配核 web UI 的方式运行 Locust,你可以通过 --csv 来指定生成 CSV 文件。一旦你使用 --csv , 会定期生成 3 个 CSV 文件。

The files will be named example_stats.csv , example_failures.csv and example_history.csv (when using --csv=example ).

当你使用 --csv=example 命令时,三个文件分别是, example_stats.csv 、 example_failures.csv 和 example_history.csv 。

The first two files will contain the stats and failures for the whole test run, with a row for every stats entry (URL endpoint) and an aggregated row.

前两个文件将包含整个测试运行的统计信息和失败的条目,每个统计信息条目(URL 端点)都有一行,并且有一个汇总行。

The example_history.csv will get new rows with the current (10 seconds sliding window) stats appanded during the whole test run.

在整个测试运行期间, example_history.csv 每 10 秒会获取一个统计信息的新行。

By default only the Aggregate row is appended regularly to the history stats, but if Locust is started with the --csv-full-history flag, a row for each stats entry (and the Aggregate) is appended every time the stats are written (once every 2 seconds by default).

默认情况下,仅将合计行定期添加到历史记录统计信息中,但是如果 Locust 以 --csv-full-history 标志开始,则每次统计信息被添加时,每个统计信息条目( 包括合计 )都将添加一行写入(默认情况下每 2 秒一次)。

You can also customize how frequently this is written if you desire faster (or slower) writing:

如旦姿果希望更快(模卖绝或更慢)的写入速度,也可以自定义写入频率:

Comma-Separated Value ( [卡门 赛婆乱提的] 逗号分隔)(CSV),因分隔符没有严格的要求,可以使用逗号,也可以使用其他字符(如制表符\t,分号等),所以CSV也被称为 逗号分隔或者其他字符分隔值 。csv文件是使用纯文本来存储表格数据(只能存储文本,不能存储二进制)。

构造器涉及到的三个参数:

注:若是设置解析的编码,需要在InputStreamReader对象中设置。

在上面我们可以使用readNext或者readAll进行逐行解读。但是opencsv提供了基于"策略"的映射,将CSV绑定到bean。

注:bean的类型只能为槐毁基本数据类型以及String类型,若是BigDecimal类型,那么将会抛出异常。

解析后的bean类:

csv文件:

通俗点就是列位置映射,csv文件中列位置对应到bean中的列。

需要注意的是,该策略会输出所有的行, 故,我们需要跳过某些行。

测试方法:

测试结果:

csv文件:

测试运明岁结果:

在csv获取的都是字符串,这种情况下应该使用转换器。将csv中的字段转换为对应的bean中的字段类型。

opencsv为我们提供了上面的两个转换器(我们可以参考,来实现自定义转换器)。使用 AbstractBeanField<T>类来实现转换器。

csv文件

注:若旁睁是列映射策略,则要使用@CsvCustomBindByPosition()注解。

测试结果:

所有的过滤器必须实现CsvToBeanFilter 接口

测试结果

(官网)csv官方文档

(官网)CSVParserBuilder——CSVParser的目的是获取单个字符串并根据分隔符,引号和转义字符将其解析为其元素。

(官网)CSVReaderBuilder类

(理论)原CSV类库:OpenCSV

(API)用opencsv文件读写CSV文件

(API)opencsv4.0 自定义规则


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8154001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存