【问题标题】:jmeter conditional execution after "response code" assertion“响应代码”断言后的jmeter条件执行
【发布时间】:2018-07-11 13:26:44
【问题描述】:

我正在尝试自动化我的测试。

基本上这是一个获取用户信息的 JSON 请求。

我的目标是通过两个不同的 JSON 断言来驱动响应断言。

一个用于正面测试用例,另一个用于负面测试用例。

我已经尝试实现这个场景:

ThreadGroup
 + Http Request
  + CSV Data Set Config -> set input and expected result
  + HTTP Header Manager -> get token from previous request
  + Regular Expression Extractor -> get Response Code
+ if Controller OK (${responseCode}=="200")
  + JSON Assertion
+ if Controller NOK (${responseCode}=="400")
  + JSON Assertion

这是正则表达式提取器:

这是 If Controller 配置:

但是“if 控制器”不起作用,这意味着 JSON 断言没有被调用。

你知道如何解决它,或者其他方法吗?

提前致谢!

【问题讨论】:

    标签: json testing automation jmeter extract


    【解决方案1】:

    关注If Controller 示例:

    "${VAR}" == "abcd"
    
    ${__groovy(vars.get("myVar") != "Invalid" )} 
    

    改成

     "${responseCode}" == "200"
    

    或者

     ${__groovy(vars.get("responseCode") == "200" )} 
    

    【讨论】:

    • 两种解决方案都不起作用。 checkResponseJSON(JSON 断言)根本不执行。所以这意味着如果控制器失败
    • 断言只能在其范围内的采样器上工作,而您没有,您不能将先前采样器的断言放入 if 控制器。见jmeter.apache.org/usermanual/test_plan.html#executionorder
    • 还有其他方法吗?
    • 您可以在响应断言中使用或条件“或在 OR 组合中应用每个断言(如果有 1 个模式来测试匹配,则断言就可以了)”。在jmeter.apache.org/usermanual/…中查看更多信息
    【解决方案2】:

    你不能有一个断言本身,断言被应用到Sampler(s)。如果您在 If Controllers 下没有任何采样器,则不会在那里执行任何操作。

    一般来说,您不能使用 If Controller 切换到这个或那个断言,保持当前测试计划结构的唯一方法是使用 Dummy Sampler 和 __groovy() function 将您的 [${TEST_DESC] 采样器响应数据复制到 Dummy采样器。

    示例测试计划大纲:

    • [${TEST_DESC]
      • 响应代码
    • 如果控制器 #1 的条件为 ${__jexl3(${responseCode}=="200",)}
      • 带有“响应数据”的虚拟采样器${__groovy(prev.getResponseDataAsString(),)}
        • 检查响应 json ok
    • 如果控制器 #2 的条件为 ``${__jexl3(${responseCode}=="400",)}`
      • 带有“响应数据”的虚拟采样器${__groovy(prev.getResponseDataAsString(),)}
        • 检查响应 json 不正确

    您可以使用JMeter Plugins Manager 安装虚拟采样器

    【讨论】:

      【解决方案3】:

      使用 IF 控制器,您可以将字符串放置为 ${JMeterThread.last_sample_ok} 这将检查上一个请求的响应并相应地工作..!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多