51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 771|回复: 0
打印 上一主题 下一主题

[原创] 如何通过if条件语句来控制控制机?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-22 15:58:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草帽路飞UU 于 2022-9-23 16:31 编辑

逻辑控制之IF条件控制器测试环境

JMeter-5.4.1

循环控制器介绍添加While Controller

右键线程组->添加->逻辑控制器->While控制器




控制器面板介绍

添加后,面板如下





仅Expression值为true,才会执行位于其下的操作

最好勾选(默认配置)Interpret Condition as Variable Expression?,这样Expression输入框可以有两种输入选择:

  • 输入一个值为true 或者false的变量
    比如,如果你想测试,最后一个采样器执行是否成功,可以输入${JMeterThread.last_sample_ok}


  • 输入对bool表达式求值的函数(建议使用${__jexl3()},当然也可以用支持__groovy) ,形如
    ${__jexl3(${COUNT} < 10 && "${VAR}" == "abcd",)}

例如,没勾选上述配置之前,使用条件:${__jexl3(${VAR} == 23)},该条件计算结果(true或者false)会被传递给JavaScript,最后由JavaScript反回该结果值。勾选上述配置之后,会将该条件计算结果直接与true比较,不需要使用

JavaScript.

检测变量是否为定义或者为null,可以采用以下表达式,假设变量命名为 myVar:

${__jexl3("${myVar}" == "\${myVar}")}

或者:

${__jexl3("${myVar}" != "\${myVar}")}

如果不勾选 Interpret Condition as Variable Expression? 控制器会使用javascript计算表达式,这会带来很大的性能消耗,并且降低测试的扩展性。

Evaluate for all children

如果勾选,则执行其下所有子组件时都会重新计算条件值,否则仅在进入控制器时时进行计算

示例:如下图,If Controller条件为${__jexl3("${myVar}" == "\${myVar}")},执行HTTP Request1之前没有设置myVar变量。


没勾选Evaluate for all children之前,运行时,HTTP Request2也会被执行,反之,HTTP Request2不会被执行。

例子(JavaScript)


  • ${COUNT} < 10

  • "${VAR}" == "abcd"

如果在解释代码时出错,那么条件结果值会被设置为false


当使用__groovy时,注意不要在字符串中使用变量替换,形如${__groovy("${myVar}" == 1)},否则使用了改变脚本的变量不能被缓存。取而代之,使用vars.get("myVar"),参见下文

例子(Variable Expression)


  • ${__groovy(vars.get("myVar") != "Invalid" )} (检查myVar变量是否等于Invalid)

  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (检查myInt变量是否小于等于4)

  • ${__groovy(vars.get("myMissing") != null )} (检查是否设置了myMissing变量)

  • ${__jexl3(${COUNT} < 10)}

  • ${RESULT}

  • ${JMeterThread.last_sample_ok} (检查最后一个采样器采样是否成功)






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 15:30 , Processed in 0.065597 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表