前段时间做接口自动化的时候遇到很多查询接口,接口出参会随着入参type的变化,得到不同type下的数据。

如上图,是接口query_financial_stock的说明。测试时候对入参financial_type分别传入值100301、100302、100303、100304、100305、100306进行验证。
上述入参得到的结果,对应的sql如下:
SELECT
jfp.stock_code,
jfp.stock_name,
jfp.financial_ranking,
jfp.industry_code,
jfp.innercode
FROM
jy_financial_performance jfp
WHERE
jfp.financial_type = “financialtype”ANDjfp.industryname=“{financial_type}” AND jfp.industry_name = “{industry_name}”
ORDER BY
jfp.financial_ranking ASC
LIMIT 5
不借助jmeter,修改where条件语句,在数据库执行也能很快验证完毕。但当类似接口有七八个的时候,每个接口类似的type有6~10个不等的时候,你有没有想过“偷懒”的方法。
借助jemeter的ForEach控制器,三个步骤可以快速实现。
1、 定义financial_type值
在jmeter“用户定义的变量”中定义financial_type各个值
financial_type_1 = 100301
financial_type_2 = 100302
financial_type_3 = 100303
financial_type_4 = 100304
financial_type_5 = 100305
financial_type_6 = 100306
如下图:

2、 添加ForEach控制器

如上图,输入前缀是financial_type, 左下角勾选“Add _ before number”,与输入前缀拼接后为“financial_type_”。start index for loop为0,end index for loop为6,是“左开右闭”,即(0,6]。ForEach控制器会依次取financial_type_1、financial_type_2、financial_type_3、financial_type_4、financial_type_5、financial_type_6 的值,并赋值给 financial_type。
3、 请求接口
接口请求时,将设置入参financial_type=${financial_type},每次ForEach控制器更新financial_type字段值时,接口请求入参都会相应变化。如下图:

此外,还需添加一个后置控制器JDBC PostProcessor(前置控制器PreProcessor也可以),这个是为更准确的断言做数据准备。将需要做断言进行校验的字段(stock_code,stock_name,financial_ranking,industry_code, innercode),sql选出并输出(stock_code,stock_name,financial_ranking,industry_code,id)。如下图:

4、 断言
设置合适的断言,会提高很大接口自动化的效率。如上面这个接口,主要需要关注输出参数stock_code,stock_name,financial_ranking,industry_code,id的数据。如下图,对这些数据做断言。

响应断言的“模式匹配规则”建议选择“包括”,对于有一些无关紧要的输出字段可以用正则匹配的方法。“包括”只要断言数据包含在响应数据里,同时还可以用正则进行匹配。“匹配”是需与响应数据完全一致,支持正则匹配,但需全部匹配。“Equals”是完全相同。“Substring”是只要断言数据在响应数据里即可,是包含关系,不支持正则。“否”是没有断言的数据。

jmeter巧用ForEach控制器相关推荐

  1. Jmeter性能测试之ForEach控制器的使用

    本文主要介绍下ForEach控制器的基本用法~ ForEach控制器一般和用户自定义变量一起使用,从用户自定义变量中读取一系列相关的变量.该控制器下的采样器或控制器都会被执行一次或多次,遍历读取不同的 ...

  2. Jmeter逻辑控制器之Foreach控制器如何使用多个变量作为输入

    ForEach Controller只支持一个变量作为输入,但是有时候我们其它的输入变量也同步随着ForEach Controller中的变量值不同而不同,我们需要使用多个变量作为输入变量. 除了Fo ...

  3. Jmeter+ForEach控制器+BeanShell取样器+BeanShell PostProcessor爬取网站信息储存csv

    1.正则提取器+ForEach控制器+BeanShell PostProcessor+BeanShell 取样器,爬取网站信息并写入到csv中 2.访问网站设置 3.正则提取设置,匹配数字-1代表提取 ...

  4. 性能测试之JMeter中ForEach控制器详解

    1.什么是逻辑控制器 JMeter官网对逻辑控制器的解释是:"Logic Controllers determine the order in which Samplers are proc ...

  5. jmeter 正则获取参数集合和ForEach控制器结合使用(转)

    怎么把第一个请求获取的返回的多个id,在第二个请求中逐个以单个id作为请求参数来请求? 为了解决这个问题,模拟下该场景 1.请求www.163.com 主页,获取响应中的所有数字,这个获取的数字集合暂 ...

  6. Jmeter之ForEach控制器(配合正则表达式使用)

    在使用正则表达式提取响应信息时,存在部分信息有多个值,为了能使用所有的值,可以结合ForEach控制器使用. 一.界面显示 二.配置说明 1.名称:标识 2.注释:备注 3.输入变量前缀:是指需要提取 ...

  7. jmeter ForEach控制器学习

    ForEach控制器在用户自定义变量中读取一系列相关的变量.该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值.所以ForEach总是和用户定义的变量一起使用.下面会以实例的形式介绍 ...

  8. jmeter练习(5)关联升级版—ForEach控制器(提取多个响应结果并依次传参)

    前言:大多数情况下,我们会从上一个请求的响应结果中提取某一个值,作为第二个请求的参数进行传参,但是有时候为了提高测试效率,尽可能制造少的测试数据,我们需要从上一个请求的响应结果中获取某一组相同类型的值 ...

  9. foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器

    关于jmeter中的逻辑控制器有很多是可以帮助我们在接口测试中解决很多问题的,今天我们来了解一下ForEach控制器,看到这个控制器很多人第一反应是for循环,实际原理也差不多,但是并不等同于jmet ...

最新文章

  1. 如何防止token被拦截_Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
  2. VMWare虚拟机NAT模式静态IP联网配置
  3. 增大mysql修改表空间_innodb系统表空间维护方法
  4. android手机如何提速,安卓手机上网如何提速
  5. 【JavaEE】javaee一些问题方案
  6. Q-learning和Sarsa
  7. 父与子的编程python_父与子的编程之旅:与小卡特一起学Python 完整版
  8. 2021年行政区划代码
  9. 从三方面分析,Java程序员如何晋升为高薪Java架构师?
  10. 华为OD机试题:按区间反转文章片段
  11. 我叔叔愿意从事计算机工作英语翻译,我的叔叔作文
  12. Linux学习之路_8.搜索查找类
  13. OpenCV论道:为什么我的伽马校正函数只有一行?
  14. jquery DataTables 固定列(fixedcolumns)不生效问题
  15. FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】
  16. Python全国二级等级考试 资源!
  17. 转 Sap客户端中英文切换
  18. Uniapp实现快递物流轨迹
  19. Linux学习-28-用户间切换相关命令
  20. cad注释比例和打印比例不一样_关于CAD里的比例问题我一直有疑问1:1与1:100的比例究竟有什么差别?标注时又怎样不影响?...

热门文章

  1. 读书笔记——《802.11无线网络权威指南》
  2. MT8516处理器简介—MT8516芯片技术资料解析
  3. 图片框(PictureBox)
  4. 程序人生丨程序员必会的 10 种核心技能,全掌握你就是行业高手
  5. 卸下浮躁 回归本心 回归技术
  6. 圆为什么规定一定是360度_为什么圆是360度
  7. 【转载】分贝是个什么东西?
  8. ECMAScript6 入门
  9. ZYNQ7000学习(十八)多路 PWM 原理分析以及实现试验
  10. Luogu P4168 [Violet]蒲公英(分块)