JMeter检查状态是否为200

时间:2018-02-15 09:40:41

标签: jmeter

在我的测试计划中,我有2个端点bidwin。如果bid端点返回状态200(它也可以返回204,但我只需要200,那么我就不能使用${JMeterThread.last_sample_ok})我需要运行win端点。 我做了:

  1. 创建已定义的变量STATUS_OK

    enter image description here

  2. bid请求下创建正则表达式提取器以获取响应代码enter image description here

  3. 在该控制器enter image description here下添加If controller并插入win请求:

  4. 但是if controller条件不起作用,Jmeter从不运行win请求。

    知道它为什么不起作用?或者我可以调试它?我将不胜感激任何帮助!!!

    已更新,包括测试计划结构 enter image description here

    • 出价请求 - 为每个出价请求提供随机jsons的CSV数据集配置(如提到的那样here
    • 主题 - 它是一个拥有200个用户和1个循环的主题
    • 出价 - 发布请求,主体我使用json文件${__FileToString(/home/user/Downloads/jmeter/jsons/${__eval(${JSON_FILE})}.txt,,)}之一。 出价请求还包括货币,bidid等。它是Json 提取器,我使用该数据生成正确的 win 网址 每个出价
    • 如果出价 - 如果控制器在此讨论
    • win - 获取请求,其中网址查询不同取决于出价响应(使用Json提取程序)。网址看起来像: win?auctionId=${AUCTIONID}&bidId=${BIDID}&impId=${IMPRESSIONID}&seatId=${SEAT}&price=${__javaScript((Math.random()* (4 - 1)+1).toFixed(4);)}&cur=${CUR}&adId=${ADID}

2 个答案:

答案 0 :(得分:3)

对于If Controller您应该使用__groovy或__jexl3函数

  

将条件解释为变量表达式?如果选择此选项,则条件必须是计算结果为“true”的表达式(忽略大小写)。例如,$ {FOUND}或$ {__ jexl3($ {VAR}> 100)}。与JavaScript情况不同,仅检查条件是否匹配“true”(忽略大小写)。   对于表演

,建议在条件中检查并使用__jexl3或__groovy函数

在您的情况下使用

${__groovy(vars.get("BID_STATUS") == vars.get("STATUS_OK") )}

或者

${__jexl3("${BID_STATUS}" == "${STATUS_OK}")}

答案 1 :(得分:1)

您需要用引号括起JMeter变量引用,如:

"${BID_STATUS}" == "${STATUS_OK}"

或者(更好)你可以摆脱这个正则表达式提取器并切换如果控制器的条件使用__groovy() function如:

${__groovy(prev.getResponseCode().equals(vars.get('STATUS_OK')),)}

JMeter Groovy Previous Request Status

更多信息:Apache Groovy - Why and How You Should Use It