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

解决:添加【循环控制器】指定循环次数,并使用__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. 代码审计——基础(JAVAEE)

    JAVAEE 目录 JAVAEE 常见框架 Struct2(控制层) Hibernate(持久层(与数据库交互)(不用再写简单的sql语句,但是需要一些列复杂的配置文件))(全ORM模型) Sprin ...

  2. vue-cli 单文件组件 工具安装

    https://cli.vuejs.org/zh/ 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) ...

  3. Linux Topicons Plus桌面工具安装

    Topicons Plus是Linux系统GNOME桌面环境的工具,方便于在工具栏显示应用小图标. 1.进入GNOME商店搜搜下载TopIcons Plus工具.下载路径:https://extens ...

  4. 小米 红米 Redmi MIUI 5G开关

    小米 红米 Redmi MIUI 5G开关 1.打开手机拨号界面输入 *#*#54638#*#* 之后拨号界面底部会显示display 5G network menu (显示5G网络菜单) 注意:先是 ...

  5. 如何排查常规软件问题 - 面向 Linux 初级用户的教程

    笔者从 14 年做开源软件以来,接触了众多 Linux 新手用户,这里我为这类用户总结了一些常见的问题排查方法,希望能帮助到大家.如果你已经工作多年,对于下面提到的思路和方法应该非常熟悉,如果对某一条 ...

  6. 跨域问题CORS笔记

    CORS跨域问题 跨域问题简介 跨域资源共享(Cross-origin resource sharing, CORS)是用于让网站资源能被不同源网站访问的一种安全机制,这个机制由浏览器与服务器共同负责 ...

  7. MapStruct - 注解汇总

    @Mapper @Mapper 将接口或抽象类标记为映射器,并自动生成映射实现类代码. public @interface Mapper { // 引入其他其他映射器 Class<?>[] ...

  8. HTML元素如何按字符串原格式输出文本换行制表符信息

    只需给相应HTML元素添加 style="white-space: pre"

  9. Python中的常见方法

    Python中有三种比较常见的方法类型,如类方法和静态方法,实例方法,他们是面向对象编程中重要的概念. 1.类方法 类方法是通过使用装饰器@classmethod来定义的,他的第一个参数是cls,指向 ...

  10. [一句话说iOS]dispatch如何造成死锁

    dispatch_sync执行了两件事:把代码块放入指定线程的任务队列中.堵塞当前线程直到代码块执行结束,如果出现了堵塞的线程和代码块所在的线程为同一线程的话,这个时候代码无法在此线程执行继续下去,即 ...