我目前正在进行重负载测试,我有一个登录请求,该登录请求可以使用用户名和密码以及基本身份验证进行访问,我必须从响应中验证一些信息,并且我正在使用断言,但是我需要使用其他类型的声明断言取决于代码响应,并且为了能够做到这一点,我正在使用if控件将断言作为子项放入内部,当我尝试执行带有错误代码响应的断言时,问题就开始了,某些if控制器不是取我创建的用于存储代码响应的变量的值。有人可以帮我吗?谢谢!
答案 0 :(得分:0)
您不能将断言作为If控制器的直接子代。实际上,您可以这样做,但是断言遵循JMeter Scoping Rules并没有任何意义,并且由于Assertion范围内没有任何Sampler,因此它将不会被执行。
我建议您使用JSR223 Assertion和Groovy SDK的所有功能,以便设置自定义通过/失败标准。伪代码将类似于:
if (SampleResult.getResponseCode().equals('200')) {
//do what you need when response code is 200
//for example let's check if response contains "foo" line
if (!SampleResult.getResponseDataAsString().contains('foo')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('Failed to find "foo" line in the response')
}
}
else if (SampleResult.getResponseCode().equals('300')) {
//do what you need when response code is 300
}
else if (SampleResult.getResponseCode().equals('400')){
//do what you need when response code is 400
}
else {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('Unexpected response code: ' + SampleResult.getResponseCode())
}
参考文献: