jmeter巧用ForEach控制器

前段时间做接口自动化的时候遇到很多查询接口,接口出参会随着入参type的变化,得到不同type下的数据。
interface
如上图,是接口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 = “ financialtypeANDjfp.industryname= {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
如下图:
define
2、 添加ForEach控制器
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字段值时,接口请求入参都会相应变化。如下图:
types
此外,还需添加一个后置控制器JDBC PostProcessor(前置控制器PreProcessor也可以),这个是为更准确的断言做数据准备。将需要做断言进行校验的字段(stock_code,stock_name,financial_ranking,industry_code, innercode),sql选出并输出(stock_code,stock_name,financial_ranking,industry_code,id)。如下图:
post
4、 断言
设置合适的断言,会提高很大接口自动化的效率。如上面这个接口,主要需要关注输出参数stock_code,stock_name,financial_ranking,industry_code,id的数据。如下图,对这些数据做断言。
assetion
响应断言的“模式匹配规则”建议选择“包括”,对于有一些无关紧要的输出字段可以用正则匹配的方法。“包括”只要断言数据包含在响应数据里,同时还可以用正则进行匹配。“匹配”是需与响应数据完全一致,支持正则匹配,但需全部匹配。“Equals”是完全相同。“Substring”是只要断言数据在响应数据里即可,是包含关系,不支持正则。“否”是没有断言的数据。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值