如何解决尝试将“仅运行一次”控制器与“If”控制器一起使用,但在线程组下更改了请求顺序
说明: 我有由 JMeter 并发运行的基本流程。
场景:
用户请求访问令牌,然后执行“POST”操作(创建一些项目)。 获取访问令牌应该是每个 ALL 测试计划(跨所有线程)一次 例如,我使用 10 个用户(线程)和单次迭代(loop_count=1)
问题:
我只成功运行了一次 get TOKEN,但是,请求的顺序像奇怪的东西一样改变了,所以如果我运行 10 个线程 - JMeter 首先尝试运行 9 个“创建”请求,然后然后只运行一次获取令牌,然后运行“创建”的最后一个事务。
预期结果:
我希望先运行 get Token 一次,然后再运行“Create”的全部 10 个请求。
注意:测试计划配置为并行运行(连续选项未选中)
解决方法
不太清楚您如何获取令牌并将其跨线程传递,以防万一这里引用了 JMeter 文档:
属性与变量不同。变量是线程的局部变量;属性对所有线程都是通用的
- Once Only Controller 让它的子线程只在线程组的第一次迭代中运行
- 如果 Controller 在条件解析为
true
时让它的子进程运行
因此,如果您仅通过一个线程获取令牌并将其存储到 JMeter 变量中 - 它将仅对该线程可用
建议的解决方案:移动您的逻辑以在 setUp Thread Group 下以 1 个用户/1 个循环获取令牌。
获得令牌后 - 使用 __setProperty() 函数将其转换为 JMeter 属性
在您的主线程组中使用 __P() function
读取令牌值版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。