【问题标题】:jmeter check different response for same requestjmeter检查相同请求的不同响应
【发布时间】:2018-07-10 09:13:41
【问题描述】:

我有这样的要求

{ 
"ID":"112345"
"SERVICE":"56AA77"
}

API 响应可能是正面的或负面的,带有不同的元素。

正面回应:

{
"RESPONSE":"OK"
"TEXT":"DONE"
}

否定回答:

{
"RESPONSE":"KO"
"DESCRIPTION":"NOT FOUND"
"ERROR_CODE":"100"
}

如何仅使用一个 HTTP 请求采样器和一个 CSV 文件对 JMeter 进行测试?

其实我用的是两个csv文件:

positive:
TEST_ID,TEST_DESC,ID,SERVICE,RESPONSE,TEXT

negative:
TEST_ID,TEST_DESC,ID,SERVICE,RESPONSE,DESCRIPTION,ERROR_CODE

是否可以只使用一个文件? 像这样:

TEST_ID,TEST_DESC,ID,SERVICE,RESPONSE,TEXT,DESCRIPTION,ERROR_CODE

Jmeter 如何处理这个问题?

更新:

我有两个 JSON 断言对象

是否可以创建 BeanShell groovy 以根据 ResponseCode 调用其中之一?

if (prev.getResponseCode().equals("200") == true) { 

checkResponsePositive

}
else
{
checkResponseNegative
}

有人可以帮助我正确的语法吗?

【问题讨论】:

    标签: json api testing jmeter


    【解决方案1】:
    1. JSR223 Assertion 添加为HTTP Request 采样器的子项
    2. 将以下代码放入“脚本”区域:

      def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
      
      if (vars.get('RESPONSE').equals('OK')) {
          if (!vars.get('TEXT').equals(response.TEXT)) {
              AssertionResult.setFailure(true)
              AssertionResult.setFailureMessage('TEXT field mismatch')
          }
      
      } else {
          if (!vars.get('DESCRIPTION').equals(response.DESCRIPTION)) {
              AssertionResult.setFailure(true)
              AssertionResult.setFailureMessage('DESCRIPTION field mismatch')
      
          }
          if (!vars.get('ERROR_CODE').equals(response.ERROR_CODE)) {
              AssertionResult.setFailure(true)
              AssertionResult.setFailureMessage('ERROR_CODE field mismatch')
          }
      }
      
    3. 上面的代码会有2个分支:

      • RESPONSE JMeter 变量为OK 时,它将验证TEXT
      • RESPONSE JMeter 变量为KO 时,它将根据相关JMeter 变量的响应验证DESCRIPTIONERROR_CODE

    更多信息:

    【讨论】:

      【解决方案2】:

      是的,这是可能的。因此,我假设您已经使用了样本变量并将它们用于常规提取器或任何提取器中,或者可能正在使用编码。现在,如果您使用它,那么它可以检查采样器响应并写入它可能找到的任何值。对于肯定的,他们可能找不到任何东西,因此可能会写“XXX_NOTFOUND”或 null 取决于数据提取方法和代码。

      在下面,我使用虚拟采样器进行肯定请求,并将所有常规提取器放在它下面。

      通过查看结果树查看生成的 csv 报告后,您可以看到找到的变量已被报告,其他变量为“xxxxx_NotFound”。这个“xxxxx_NotFound”是我在正则表达式提取器中提供的值。简而言之,对于特定请求,您可以使用多个提取器并将输出写入单个 csv。如果找到值,那么它将写入,否则它将写入您在默认值中给出的值。

      【讨论】:

      • 这似乎是一个很好的解决方案,但我需要自动化响应检查......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2014-09-10
      • 1970-01-01
      • 2019-05-07
      • 2020-07-07
      • 2020-11-23
      相关资源
      最近更新 更多