我使用JMeter作为单元测试工具,在参数化调用中,我希望一些响应是500内部服务器错误.我正在使用BeanShell Assertions来检查响应.
如果响应包含指定的文本,我希望500个内部服务器错误中的一些不被标记为失败.所有500个服务器错误都标记为失败.是否有可能改变行为?
以下是BeanShell Assertion的摘录.
if (ResponseCode.equals("500")) {
Failure = false;
String respData = new String(ResponseData);
if (! respData.contains("specific Text")) {
Failure = true;
FailureMessage = "500 Internal Server Error: Unexpected Response. " +
"Response Message: " + respData;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你们
Ali*_*lik 48
另一种可能的解决方案是使用响应断言,并将选中的"忽略状态"标记添加到您的采样器:
忽略状态
指示JMeter最初将状态设置为成功.通过将断言的结果与现有的响应状态相结合来确定样本的总体成功.选中"忽略状态"复选框后,在评估"断言"之前,会强制响应状态成功.
具有4xx和5xx范围内状态的HTTP响应通常被视为不成功.在执行进一步检查之前,"忽略状态"复选框可用于设置状态成功.请注意,这将清除任何先前的断言失败,因此请确保仅在第一个断言上设置此操作.
Ali*_*lik 38
UPD:请在下面找到最简单的"原生"解决方案:
如果你想在代码中做一些棘手的事情,请使用以下方法.
如果JSR223断言中的代码为500 或使用JSR223 PostProcessor,则访问和修改SampleResult以将状态从"FAIL"更改为"PASS" - 它们都可以访问SampleResult对象.
1. JSR223断言
if (ResponseCode.equals("500") == true) {
SampleResult.setResponseOK();
/* the same is
SampleResult.setSuccessful(true);
SampleResult.setResponseCodeOK();
SampleResult.setResponseMessageOK();
*/
}
Run Code Online (Sandbox Code Playgroud)
2. JSR223 PostProcessor
使用prev
- 来访问连接一个后处理器的采样器的SampleResult对象:
if (prev.getResponseCode().equals("500") == true) {
prev.setResponseOK();
/* the same is
prev.setSuccessful(true);
prev.setResponseCodeOK();
prev.setResponseMessageOK();
*/
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27751 次 |
最近记录: |