我们本篇文章演示在请求中,以Json形式的数据格式,实现JMeter参数化。

我们以小项目学院管理系统为例,下载地址:点击下载,里面有详细的启动配置说明和API接口文档。

接口文档如下:

学院-新增
1) 请求方法:POST
2) 请求地址:http://127.0.0.1:8000/api/departments/
3) 请求JOSN报文:(需要Content-Type=application/json)
4) 调用传入的json串如下(可新增多条,之间用,隔开):
{
"data": [
{
"dep_id":"T01",
"dep_name":"Test学院",
"master_name":"Test-Master",
"slogan":"Here is Slogan"
}
]
}
5) 新增成功返回报文:
{
"already_exist": {
"results": [],
"count": 0
},
"create_success": {
"results": [
{
"dep_id": "T02",
"dep_name": "Java学院",
"master_name": "Java-Master",
"slogan": "java"
}
],
"count": 1
}
}
6) 新增失败id已存在-返回报文:
{
"already_exist": {
"results": [
{
"dep_id": "T01",
"dep_name": "Test学院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
],
"count": 1
},
"create_success": {
"results": [],
"count": 0
}
}
7) 新增失败json格式错误:
{
"status_code": 400,
"detail": "请求体参数格式错误。"
}

1、使用“CSV数据文件设置”组件实现参数化

例如:现在有一个需求,实现批量添加学院信息。

(1)测试计划中的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加配置元件"HTTP信息头管理器"组件:选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP信息头管理器
  4. 在线程组中,添加配置元件CSV Data Set Config组件:选中“线程组”右键 —> 添加 —> 配置元件 —> CSV数据文件设置
  5. 在线程组中,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  6. 在线程组中,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中包含的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)数据文件内容

先用Excel表格编辑所需的请求参数,内容如下:

我们需要把该文件保存为.csv格式。

然后使用Notepad++打开该文件,点击“编码” —> 转为UTF-8编码,防止中文乱码。

最终所得到的.csv格式文件的内容如下:

(3)线程组元件内容

如果需要使用CSV文件中所有的数据,需要设置线程组元件的线程数或循环次数。

因为在CSV数据文件设置组件中,有Recycle on EOFStop thread on EOF选项的关系,所以设置线程数和循环次数都可以实现,使用数据文件中的每一组数据进行测试。

(4)HTTP信息头管理器组件内容

因为我们要使用Post请求发送Json数据,所以需要在请求头中设置Content-Type=application/json

如果我们不在请求头中进行设置,默认请求头的Content-Type值为text/plain,(这在前面的Post请求文章中有详细的说明),并且在接口文档中也有明确的要求说明。

如下图所示:

(5)CSV数据文件设置组件内容

如下图所示:

我一般常用操作,简单说明:

  • 文件名:就直接浏览选择文件即可,也就是使用数据文件的绝对路径。
  • 文件编码选择UTF-8
  • 变量名称:就是把数据文件的每个变量名都填写上,中间用逗号分割。
  • 忽略首行:选择True,如果CSV文件中首行写的是变量名称,选择忽略首行。
  • 分隔符:如果CSV文件中的数据,使用的是逗号隔开,就是默认值。如果是制表符,就用\t表示。
  • 是否允许带引号?:如果变量值中有引号就选择True,没有则默认False即可。
  • 其他一般默认选择。如果需求看上面说明中写的很详细,按工作中实际情况选择。

(6)HTTP请求组件内容

在JMeter中使用参数化变量的格式:${变量名}

编辑添加学院接口内容,如下图所示:

我们可以看到${变量名}中的引用变量名,是以CSV数据文件设置组件中变量名称中定义变量名为准。如果不在变量名称栏中定义任何内容,就以数据文件中的标题列名为引用变量名。

(7)脚本运行结果

该测试脚本运行结果如下图所示:

可以看到四个学院都成功添加到数据库中了。

我们再去数据库中查看一下,如下图所示:

这样就说明我们的JMeter测试脚本实现成功了。

2、使用“用户参数”组件实现参数化

接下来我们使用“用户参数”组件,来实现上面的接口。

(1)添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加配置元件"HTTP信息头管理器"组件:选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP信息头管理器
  4. 在线程组中,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  5. 在取样器中,添加前置处理器“用户参数”组件:选中“取样器”右键 —> 添加 —> 前置处理器 —>用户参数
  6. 在线程组中,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件,如下图所示:

(2)元件中的内容介绍

其实就是把上面示例中,CSV数据文件设置组件删除掉,然后在取样器请求的下一级,添加一个用户参数组件。

其他元件的内容都没有任何的改动。

所以这里指展示用户参数组件中的内容,其他组件看上面配置就好。

用户参数组件内容如下:

测试结果也是完全通过,数据能够直接存储到数据库中。

数据库中,如下图所示:

说明我们上面的JMeter脚本执行成功了。

『动善时』JMeter基础 — 25、JMeter参数化补充练习的更多相关文章

  1. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  2. 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)

    目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...

  3. 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化

    目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...

  4. 『动善时』JMeter基础 — 24、JMeter中使用“用户参数”实现参数化

    目录 1.用户参数组件介绍 2.用户参数界面介绍 3.使用"用户参数"组件实现参数化 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)用户参数组 ...

  5. 『动善时』JMeter基础 — 29、JMeter响应断言详解

    目录 1.JMeter断言介绍 2.响应断言组件界面详解 3.响应断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)响应断言界面内容 (4)查看运行结果 (5)断言结果组件 ...

  6. 『动善时』JMeter基础 — 57、Linux系统中运行JMeter脚本

    目录 1.Linux系统中安装Java环境 (1)解压Java安装包 (2)配置Java环境变量 (3)验证Java环境是否配置成功 2.Linux系统中安装JMeter (1)下载JMeter (2 ...

  7. 『动善时』JMeter基础 — 58、JMeter分布式测试

    目录 1.JMeter分布式测试概念 2.JMeter分布式测试前提条件 3.JMeter实现分布式测试 (1)在执行机中的配置 (2)在控制机中的配置 (3)启动执行机中的JMeter服务 (4)在 ...

  8. 『动善时』JMeter基础 — 1、JMeter介绍

    1.什么是JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试.它最初被设计用于Web应用测试,但后来扩展到其他测试领域. (Apache ...

  9. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

随机推荐

  1. python程序—一键部署keepalived+lvs

    一个DS 两个RS keepalived端在/root下准备好已经修改好的配置文件 import paramiko # keepalived端 需要修改的信息 keepalived_ip='192.1 ...

  2. python set 一些用法

    add(增加元素) name = set(['Tom','Lucy','Ben']) name.add('Juny') print(name)#输出:{'Lucy', 'Juny', 'Ben', ' ...

  3. SpringCloud(五)GateWay网关

    Config 分布式配置中心 概述 微服务意味着要将单体应用中的业务拆分成个个子服务,每个服务的粒度相对较小因此系统中会出现大量的服务 由于每个服务都需要必要的配置信息才能运行,所以一套集中式的.动态 ...

  4. Nginx配置图片请求

    Nginx的下载安装这里就不赘述了, 在Nginx的配置文件nginx.conf 或者 自定义的配置文件中加入如下配置. server {       listen 80;       server_ ...

  5. hdu2056 矩形重叠面积(水题)

    题意:       给你两个矩形,问你他们的重叠面积是多少. 思路:      这两个矩形是平行x和y轴的,所以水题,不解释. #include<stdio.h> typedef stru ...

  6. PAT 乙级 -- 1005 -- 继续(3n+1)猜想

    题目简述 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂.        当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如 ...

  7. SQL注入平台第一关,注入?id=1'不报错的问题

    第一关需要在地址栏输入id参数测试是否有注入点 我这里输入 http://localhost/sqli-labs-master/Less-1/?id=1 下一步将id参数改为?id=1' http:/ ...

  8. 【hugo】- hugo 监听浏览器切换title

    hugo 博客 监听浏览器title 动态改变浏览器title标题 找到head.html themes/maupassant/layouts/partials/head.html 添加监听js 可以 ...

  9. Spring Framework自动装配setAutowireMode和Mybatis案例的源码探究

    由前文可得知, Spring Framework的自动装配有两种方式:xml配置和注解配置: 自动装配的类型有: (1)xml配置中的byType根据类型查找(@Autowired注解是默认根据类型查 ...

  10. 【vue-03】组件化开发 component

    vue组件化思想 组件化是vue的一个重要思想 它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构建我们的应用. 任何的应用都会被抽象成一颗组件树. 注册组件 组件的使用分成三个步骤:创建 ...