JMeter如何验证并行HTTP请求仅1个成功其余9个失败?
验证并行请求的成功计数是否恰好为1
方法一:断言+后置处理器统计验证
- 给目标HTTP请求添加Response Assertion,配置请求成功的判断条件(比如响应码为201,或响应体包含指定成功标识)。
- 给同一请求添加JSR223 PostProcessor,用脚本累计成功次数:
def successCount = vars.getObject("successCount") ?: 0 if (prev.isSuccessful()) { successCount++ vars.putObject("successCount", successCount) } - 在测试计划末尾添加JSR223 Assertion,验证最终计数:
def finalCount = vars.getObject("successCount") ?: 0 if (finalCount != 1) { AssertionResult.setFailure(true) AssertionResult.setFailureMessage("预期成功计数为1,实际为${finalCount}") }
方法二:汇总报告+监听器验证
- 给测试计划添加Summary Report,确保目标请求会在报告中单独显示。
- 添加JSR223 Listener,测试结束后读取汇总数据验证:
def targetRequestName = "你的目标请求名称" def stats = ctx.getResultCollector("Summary Report").getSampleResults().find { it.getSampleLabel() == targetRequestName } if (stats) { def successCount = stats.getSuccessfulSamples() if (successCount != 1) { log.error("预期成功计数为1,实际为${successCount}") ctx.getEngine().stopTest() } }
方法三:事务控制器聚合验证
- 将目标HTTP请求放入Transaction Controller(勾选「Generate parent sample」选项)。
- 给事务控制器添加JSR223 Assertion,统计子请求的成功次数:
def successCount = 0 prev.getSubResults().each { subResult -> if (subResult.isSuccessful()) { successCount++ } } if (successCount != 1) { AssertionResult.setFailure(true) AssertionResult.setFailureMessage("预期成功计数为1,实际为${successCount}") }
内容的提问来源于stack exchange,提问作者Vel Ganesh
相关产品推荐
相关产品推荐

