我有这种要求
{
"ID":"112345"
"SERVICE":"56AA77"
}
API响应可能是肯定的,也可能是否定的。
积极回应:
{
"RESPONSE":"OK"
"TEXT":"DONE"
}
否定反应:
{
"RESPONSE":"KO"
"DESCRIPTION":"NOT FOUND"
"ERROR_CODE":"100"
}
如何仅使用一个HTTP Request Sampler和一个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如何处理呢?
更新:
是否可以创建BeanShell groovy来基于ResponseCode调用其中之一?
if (prev.getResponseCode().equals("200") == true) {
checkResponsePositive
}
else
{
checkResponseNegative
}
有人可以用正确的语法帮助我吗?
答案 0 :(得分:1)
将以下代码放入“脚本”区域:
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')
}
}
上面的代码将有2个分支:
RESPONSE
JMeter变量为OK
时,它将验证TEXT
RESPONSE
JMeter变量为KO
时,它将根据相关JMeter变量的响应来验证DESCRIPTION
和ERROR_CODE
。更多信息:
答案 1 :(得分:1)
是的,有可能。因此,我假设您已使用样本变量并将其用于常规提取器或任何提取器中,或者可能正在使用编码。现在,如果您使用了它,那么它可以检查采样器的响应并写入可能找到的任何值。为了肯定,他们可能找不到任何东西,因此可能会写“ XXX_NOTFOUND”或为null,这取决于数据提取方法和代码。
在下面,我将虚拟采样器用于肯定请求,并将所有常规提取器置于其下方。
一旦检查了通过视图结果树生成的csv报告,您可以看到找到的变量已经报告,其他变量报告为“ xxxxx_NotFound”。这个“ xxxxx_NotFound”是我在正则表达式提取器中提供的值。简而言之,对于特定的请求,您可以使用多个提取器,并将输出写入单个csv中。如果找到值,则它将写入其他内容,它将写入您在默认情况下给出的内容。