以Json形式的数据格式实现JMeter参数化

目录
  • 1、使用“CSV数据文件设置”组件实现参数化
    • (1)测试计划中的元件
    • (2)数据文件内容
    • (3)线程组元件内容
    • (4)HTTP信息头管理器组件内容
    • (5)CSV数据文件设置组件内容
    • (6)HTTP请求组件内容
    • (7)脚本运行结果
  • 2、使用“用户参数”组件实现参数化
    • (1)添加元件操作步骤
    • (2)元件中的内容介绍

参数化就是动态的获取并设置数据,当执行批量操作时,如批量插入或批量删除,之前每执行完一次就需要修改一次,效率太低,参数化可以代替人工获取并设置数据,安全且高效!

我们本篇文章演示在请求中,以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)测试计划中的元件

添加元件操作步骤:

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

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

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

(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)添加元件操作步骤

创建测试计划。

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

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

(2)元件中的内容介绍

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

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

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

用户参数组件内容如下:

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

数据库中,如下图所示:

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

以上就是Json形式的数据格式实现JMeter参数化的详细内容,更多关于JMeter参数化的资料请关注我们其它相关文章!

(0)

相关推荐

  • Jmeter参数化获取序列数据实现过程

    一.序列数据是什么 很简单,就是利用参数化能产生顺序值,比如 1,2,3,4,5,6 或者约定格式 001,002,003,004等. 二.jmeter 产生序列数据 2.1 利用函数助手对话框实现 在jmeter菜单处点击 工具 -- 函数助手对话框 -- 下拉框选择 counter -- 进入如下界面: mac系统点击生成时会自动复制生成的函数,直接可以在需要的地方粘贴.如: 这样设置后,可以通过线程组设置界面的循环次数输入比如 5 来进行测试. 2.2 利用配置元件--计数器元件实现 st

  • Jmeter参数化实现原理及过程解析

    背景: 在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能.这种测试方式在业界称为数据驱动测试,而在实际测试工作中,测试工具中实现不同数据输入的过程称为参数化设置. jmeter提供多种参数化设置的方式,常用的有: 1.使用 用户定义的变量元件 实现 2.使用 用户参数元件 实现 3.使用 函数助手 实现 4.使用 CSV 数据文件设置元件 实现 5.其它方式(数据库数据.beanshell等)实现 一.用户定义的变量元件实现 假如设置如下: 调

  • Jmeter 中 CSV 如何参数化测试数据并实现自动断言示例详解

    当我们使用Jmeter工具进行接口测试,可利用CSV Data Set Config配置元件,对测试数据进行参数化,循环读取csv文档中每一行测试用例数据,来实现接口自动化.此种情况下,很多测试工程师只会人工地查看响应结果来判断用例是否通过. 其实我们同样可利用CSV Data Set Config来帮助我们实现自动断言. 思路:将每一条用例的预期结果一并保存在csv文档中,循环读取文档中的期望结果,来跟实际运行的结果进行一致性判断,高效实现接口自动化. 示例: 1.整理测试数据及预期结果的CS

  • Jmeter参数化实现方法及应用实例

    当使用JMeter进行测试时,测试数据的准备是一项重要的工作.若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据. 参数化:是自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,如登录时利用GET/POST请求方式传递参数的场景,在脚本运行时指定参数的取值范围和规则. 脚本在运行时,根据需要选取不同的参数值作为输入,该方式称为数据驱动测试(Data Driven Test),而参数的取值范围被称为数据池(Data Pool). 1.CVS参数化 应用:

  • Jmeter关联实现及参数化使用解析

    前言 一.Jmeter介绍 一款融合接口.性能都能完成的测试工具 纯JAVA开发的工具 开源工具 支持多种协议 应该是测试业界目前应用最多的工具之一 二.接口执行实现 添加HTTP取样器:右击测试计划--新建并右击线程组--添加--取样器--新增HTTP请求 在HTTP请求元件中添加相应请求信息(请求行.请求头.请求正文) 添加察看结果树:右击线程组--添加--监听器--新增察看结果树 保存刚设置的接口脚本,点击执行 三.关联实现 3.1 关联的概念 关联也称为串行传参或数据依赖,即上一个接口返

  • 以Json形式的数据格式实现JMeter参数化

    目录 1.使用"CSV数据文件设置"组件实现参数化 (1)测试计划中的元件 (2)数据文件内容 (3)线程组元件内容 (4)HTTP信息头管理器组件内容 (5)CSV数据文件设置组件内容 (6)HTTP请求组件内容 (7)脚本运行结果 2.使用"用户参数"组件实现参数化 (1)添加元件操作步骤 (2)元件中的内容介绍 参数化就是动态的获取并设置数据,当执行批量操作时,如批量插入或批量删除,之前每执行完一次就需要修改一次,效率太低,参数化可以代替人工获取并设置数据,安

  • C++实现json形式的Socket传输图片

    本文实例为大家分享了C++实现json形式的Socket传输图片的具体代码,供大家参考,具体内容如下 大致流程:客户端读取图片,经过Base64编码,转成字符串的形式,保存到json中,通过socket传到服务端,然后Base64解码,再转换成图片 一.服务端 1.main.cpp #include <iostream> #include <stdio.h> #include "Base64_1.h" #include <winsock2.h> #i

  • json 转 mot17数据格式的实现代码 (亲测有效)

    代码使用说明 1970-2270文件夹是保存图像和json文件(也就是需要进行转换的文件) det文件夹是保存单个json对应的txt(因为np.savetxt函数只能进行单个数组的保存) det.txt文件是整合det文件夹所有txt文件(mot17数据集格式) 完整代码 from PIL import Image import os import glob import numpy as np import json #读取图片,修改图片,另存图片 def convertjpg(jpgfil

  • JMeter参数化4种实现方式(小结)

    目录 1 参数化释义 2 参数化实现 2.1 CSV Data Set Config CSV简介 CSV实例 注意事项 2.2 User Parameters 2.3 用户定义的变量 2.4 Random 1 参数化释义 什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值. 参数化:是自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,如登录时利用GET/POST请求方式传递

  • 以JSON形式将JS中Array对象数组传至后台的方法

    业务是需要将前台jQuery easyUI DataGrid列表中所选的若干行的数据传到后台进行update操作 通常情况下我们会获取所选取行对象的ID,通过循环及简单封装拼凑成一个长String传送过去,并在Service层解释再通过findByID获取实例并update 但今次我们需要将整个对象群完整的传输至后台 其结构如下 选用谷歌的GSON插件及json2.js搭配使用 前台代码如下,简洁起见已去除部分简单验证代码: 复制代码 代码如下: var rows = $('#dg1').dat

  • JavaScript实现url参数转成json形式

    朋友问的一个面试题:有个url,要求获取url 的参数,返回值为json格式. 简单的写了下,发笔记备份. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>simple a example for url to json</title> <script> var url = 'https://www.baidu.com/s?ie=u

  • 详谈JSON与Javabean转换的几种形式

    JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换: String json1="{'name':'zhangsan','age':23,'interests':[{'interest':'篮球','colors':['绿色','黄色']},{'interest':'足球','colors':['红色','蓝色']}]}"; String json2="[{'name':'zhangsan'},{'name':'lisi'},{

随机推荐