JMETER与它的组件们

JSON提取器与Debug Sampler我们平时会遇到很多JSON格式的接口返回 , 我们需要提取参数可以用JSON提取器 , 同时配合自带的调试器来进行调试 。

JMETER与它的组件们

文章插图
 JSON提取器
Name of created variables:提取的值存放的变量名称JSON Path expression:表达式 , 就是刚在在结果树中验证的表达式 , 可以同时使用多个表达式 , 用分号隔开Match No:0 随机 1第一个 -1所有Compute concatenation var:如果匹配所有时 , 就将所有值存入变量名_ALL 中Default Value:提取不到值时默认值我们使用Dummy sampler来mock一个返回(这里不会可以上一篇)
{"topic":"mock_api","data":{"errormes":"","response":[{"name":"A","age":18},{"name":"B","age":30}]}}现在我们来提取age这个字段 , 这里会分享不同的方法来取值
第一种:一层一层从上至下取age=18这个值
//每一层就是一个"." , 因为response是个列表 , 我们去索引为0$.data.response[0].age第二种:有条件的筛选name=A的age , 使用表达式:[?(@.key == value)]
//$..直接去找response字段 , 根据表达式去找name是A的age$..response[?(@.name=="A")].age第三种:直接根据表达式找 , 并且可以一次性提取多层多变量
// Result[0]={"name":"A","age":18}$..[?(@.name=="A")].["age","name"]// Result[0]=18$..[?(@.name=="A")].age效果展示
JMETER与它的组件们

文章插图

JMETER与它的组件们

文章插图
计数器
JMETER与它的组件们

文章插图
然后我们设置不同的线程和循环次数来看看效果
设置线程1 , 循环3
JMETER与它的组件们

文章插图
设置线程2 , 循环3
JMETER与它的组件们

文章插图
设置线程2 , 循环3 , 勾选上方计数器中的与每用户独立的跟踪计数器
JMETER与它的组件们

文章插图
设置线程2 , 循环3 , 勾选上方计数器中的与每用户独立的跟踪计数器 和 在每个线程组迭代上重置计数器
JMETER与它的组件们

文章插图
while逻辑控制器、循环控制器、if逻辑控制器和测试活动这两个我们放在一起 , 假设我们需要去判断循环的次数大于5就自动跳出循环
while控制器
JMETER与它的组件们

文章插图
填入 ${__jexl3("${num}" != "5",)}
JMETER与它的组件们

文章插图
循环五次后退出 , 这里需要注意的是while条件中一般只会使用javaScript或者jexl3(这两个都是在函数助手中查看 , 辅助编写)
循环控制器+if控制器
JMETER与它的组件们

文章插图
勾选上永远 , 这样就会一直循环(这里勾选上只要是为了和上面while控制器模拟同一个场景 , 一般不会勾选永远 , 下面在做if判断 , 这样太麻烦了)
我们在for循环下面增加if控制器去判断是否满足我们需要的条件 , if下面增加一个动作控制器 , 如果满足if条件就Break , 跳出循环
if条件填入 ${__jexl3("${num}" == "5",)}

经验总结扩展阅读