背景:在做接口自动化流程中我们会遇到需要提取上个接口的返回值作为下个接口的传参,在提取值数量不固定的情况下,如何在一个线程让指定接收参数的接口自动循环完所有的传参呢?

解决:添加【循环控制器】指定循环次数,并使用__V函数和__counter计数器函数组合传参即可在【循环控制器】循环完所有的参数。如${__V(name_${__counter(1,)},)}循环3次相当于分别传入${name_1}、${name_2}、${name_3}

接下来我们以下面例子展述,已知:

  • 一次自动化盘点流程需要用到7个接口
  • 其中第4个接口的请求值需要从第3个接口的返回值里提取。第3个接口提取值数量不固定,第4个接口需要依次循环提取的每个参数值
  • 也就是这个线程里第1、2、3、5、6、7接口只需跑一次,而第4个接口根据第3个接口提取n个值而跑n次且每次传值为当前提取值

做法

1、首先我们先处理第3个接口,我提前已经使用json提取器将需要用到的值获取出来了。可看出当前一共获取到3组数据,分别是productCode_1和stockQty_1、productCode_2和stockQty_2、productCode_3和stockQty_3

   

2、接下来我们需要将这3组数据分别传给第4个接口

  • 先添加一个循环控制器,循环次数=${productCode_matchNr}(即获取到几组数据)

  • ▲重点是第4个接口,需要接收3组数据。我的实现方法是使用__V函数__counter函数来完成
  • ${__counter(1,)} 在循环控制器3次后分别=1、2、3
  • ${__V(productCode_${__counter(1,)},)} 循环3次相当于分别传入${productCode_1}、${productCode_2}、${productCode_3}。另外一个参数stockQty同理传入${__V(stockQty_${__counter(1,)},)}

3、上面设置完后,执行整个线程查看运行结果。我们看到第1、2、3、5、6、7个接口只跑了一次,而第4个接口跑了3次且参数均不一致如下

取第4个接口第3次循环的数据进行验证,循环结果正确

  • ${__counter(1,)} =3
  • ${__V(stockQty_${__counter(1,)},)}  =stockQty_3=20.0
  • ${__BeanShell(${__V(stockQty_${__counter(1,)},)}+${__counter(1,)},)}  =${__BeanShell(20.0+${__counter(1,)},)}=${__BeanShell(20.0+3,)}=23.0
  • ${__V(productCode_${__counter(1,)},)}  =productCode_3=8

   

至此我们已实现开篇我们想要的循环指定接口并接收不同参数值的效果

Jmeter循环指定接口并接收不同参数值的更多相关文章

  1. 『动善时』JMeter基础 — 52、使用JMeter测试Dubbo接口

    目录 1.Dubbo介绍 2.准备测试Dubbo接口的环境 3.Dubbo Sample界面详解 4.Dubbo Sample组件的使用 (1)测试计划内包含的元件 (2)使用zookeeper协议请 ...

  2. 学习总结——JMeter做http接口功能测试

    JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...

  3. JMeter接口测试-JMeter+ant实现接口自动化测试

    前言 小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试. 1.安装JDK,配 ...

  4. jmeter中测试接口

    本文主要介绍在jmeter中测试接口:主要从以下几个方面进行说明: 1.jmeter简介 2.jmeter怎么做接口测试 3.jmeter进行参数化的几种形式 4.jmeter中处理乱码方法 5.jm ...

  5. Java -- 获取指定接口的所有实现类或获取指定类的所有继承类

    Class : ClassUtil package pri.lime.main; import java.io.File; import java.io.IOException; import jav ...

  6. Jmeter+ant+Jenkins接口自动化框架搭建

    摘自:https://testerhome.com/topics/13389 一.背景  上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...

  7. 使用Jmeter测试thrift接口

    术语描述 jmeter:一款性能压力测试工具,支持多种协议,java .http 等,但是不支持thrift thrift:跨语言的RPC调用框架,提供编译器,可以将thrift接口生成不同语言的接口 ...

  8. 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

  9. 『动善时』JMeter基础 — 50、使用JMeter测试WebSocket接口

    目录 1.什么是WebSocket接口 2.为什么需要WebSocket 3.测试WebService接口前的准备 4.WebSocket Sampler组件界面详解 5.使用JMeter测试WebS ...

  10. 『动善时』JMeter基础 — 51、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

随机推荐

  1. Understanding Swift’s value type thread safety - 代码分析(二)

    示范代码 ` func testScenarioA2() throws { var store: Int = 100 DispatchQueue.concurrentPerform(iteration ...

  2. Qt内存回收机制

    参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=16 Qt中内存的回收是自己完成的,实验中,我们自定义一个按钮,通过重写析构函数来观察现象. 新建 ...

  3. REACT 前端界面提交

    在react项目中安装代理中间件 setupProxy.js文件 const { createProxyMiddleware: proxy } = require('http-proxy-middle ...

  4. AnkhSVN For Visual Studio 2022

    AnkhSVN For VS2022 AnkhSVN 2.9.87 - Visual Studio 2022 support https://github.com/AmpScm/AnkhSVN/rel ...

  5. 将MP4(视频)转换为MP3(音频)

    使用VLC Media Player 步骤1. 在计算机上启动VLC Media Player,点击「媒体」并选择「转换/储存」. 步骤2. 点击「加入」以浏览并打开MP4文件,然后点击「Conver ...

  6. OpenSSL生成加密证书.cer和.pfx

    linux自带openssl,所以在linux平台操作. 先输入: openssl 再输入: genrsa -out private-rsa.key 1024 生成私钥,无密码保护的私钥. 输入: r ...

  7. springboot之日志配置-logback

    springboot之日志配置-logback 1.为什么使用logback logback是springboot默认集成的,是基于Sl4J的日志框架. logback的内核重写了,使得在某些关键路径 ...

  8. JavaScript中如何终止forEach循环&跳出for(双层)循环?

    在JavaScript中,forEach方法是用于遍历数组的,通常没有直接终止循环的机制.然而,我们可以使用一些技巧来模拟终止forEach循环.以下是几种常见的方法 1.使用return语句:在fo ...

  9. uboot 修改代码 增加 环境变量

    --- title: uboot修改代码增加环境变量 date: 2019-12-27 21:26:39 categories: tags: - uboot --- 以"tftp下载kern ...

  10. FFMpeg 中的数据结构

    FFMpeg 中比较重要的函数以及数据结构如下: 数据结构: (1) AVFormatContext (2) AVOutputFormat (3) AVInputFormat (4) AVCodecC ...