jmeter - 如果控制器逻辑
问题描述
我有一个要求,我需要验证与输出 JSON 匹配的案例:我在 if 控制器中编写了代码:(所以如果所有案例都匹配,我们会说传递并打印值)它实际上工作正常..
("${C_etrTimestamp}"=="${ETRTIMESTAMP}")&&("${C_EventName}"=="${EVENTNAME}")&&("${C_EventType}"=="${EVENTTYPE}")&&("${C_AreaName}"=="${AREANAME}")&&("${C_AreaType}"=="${AREATYPE}")&&("${C_additionalInfo}"=="${ADDITIONALINFO}")&&("${C_resultStatusCode}"=="${RESULTSTATUSCODE}")&&("${C_resultStatusMessage}"=="${RESULTSTATUSMESSAGE}")
但我还需要打印那些不匹配的结果:所以我创建了另一个if controller
. 在里面我写了下面的代码:(但它对我不起作用)所以第一个if
正在执行。但是那些不匹配的结果没有进入第二个if controller
。
("${C_etrTimestamp}"!=="${ETRTIMESTAMP}")or("${C_EventName}"!=="${EVENTNAME}")or("${C_EventType}"!=="${EVENTTYPE}")or("${C_AreaName}"!=="${AREANAME}")or("${C_AreaType}"!=="${AREATYPE}")or("${C_additionalInfo}"!=="${ADDITIONALINFO}")or("${C_resultStatusCode}"!=="${RESULTSTATUSCODE}")or("${C_resultStatusMessage}"!=="${RESULTSTATUSMESSAGE}")
谁能建议我该怎么做?
解决方案
与其尝试否定每个子句,不如使用 `!(...) 使第二个条件与第一个条件完全相反:
!(("${C_etrTimestamp}"=="${ETRTIMESTAMP}")&&("${C_EventName}"=="${EVENTNAME}")&&("${C_EventType}"=="${EVENTTYPE}")&&("${C_AreaName}"=="${AREANAME}")&&("${C_AreaType}"=="${AREATYPE}")&&("${C_additionalInfo}"=="${ADDITIONALINFO}")&&("${C_resultStatusCode}"=="${RESULTSTATUSCODE}")&&("${C_resultStatusMessage}"=="${RESULTSTATUSMESSAGE}"))
您还可以将条件简化为与其中的所有变量进行比较(因为您希望所有变量都匹配),make 更短且更易于阅读。
首先如果:
"${C_etrTimestamp}${C_EventName}${C_EventType}..."=="${ETRTIMESTAMP}${EVENTNAME}${EVENTTYPE}..."
第二个如果:
!("${C_etrTimestamp}${C_EventName}${C_EventType}..."=="${ETRTIMESTAMP}${EVENTNAME}${EVENTTYPE}...")
推荐阅读
- selenium - 存在警报时打开新标签硒?
- javascript - 反应 createRef() 与回调参考。使用其中一个有什么优势吗?
- java - 如何在arraylist中显示重复数
- php - 为什么我收到错误致命错误:在非对象上调用成员函数 getUserOptions()
- format - 是否有标准化的消息格式?
- java - 如何避免并发重复查询
- python - 使用内置函数从另一个类返回矩形集合
- karaf - 将ODL控制器连接到mininet时,为什么在dlux.topology页面看不到拓扑信息?
- laravel - 在 QueryBuilder 中使用 Where - Laravel
- node.js - 在没有 npm 或 node.js 的情况下将 Angular Universal 部署到共享主机