Jmeter-仅在请求或断言失败时打印日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter-仅在请求或断言失败时打印日志相关的知识,希望对你有一定的参考价值。
以下是JSR223 Assertion groovy代码,我们只在请求或断言失败或两者都失败时尝试记录。
import groovy.json.JsonSlurper
String jsonString = SampleResult.getResponseDataAsString();
String StartProcessResponseCode= SampleResult.getResponseCode();
def tokenJSON = new JsonSlurper().parseText(jsonString)
if (!SampleResult.isSuccessful()) {
log.info("Failed Response Data---------"+SampleResult.getResponseDataAsString())
}
String status= tokenJSON.status
assert StartProcessResponseCode.equals("200")
assert "SUCCESS".equals(status)
for (a in SampleResult.getAssertionResults()) {
if (a.isError() || a.isFailure()) {
//log.error(Thread.currentThread().getName()+": "+SampleLabel+": Assertion
failed for response: " + new String((byte[]) ResponseData));
log.info("Failed Assertion Message---------------------"+AssertionResult.getFailureMessage());
log.info("Failed Response Data---------------------"+SampleResult.getResponseDataAsString())
}
}
但在这种情况下,错误不会记录任何断言失败
答案
首先,如果你想捕获有关断言的所有信息,你应该选择JSR223 Listener,因为JMeter Test Elements Execution Order监听器是在断言后执行的,因此它保证在检查之前将应用所有断言。
关于问题本身,我的期望是你的断言逻辑在assert
语句上失败,这些语句抛出未处理的AssertionError并且你的测试根本不进行
请参阅以下示例:
log.info('Assertion Start')
assert 'foo'.equals('bar')
log.info('Assertion Ended')
根据你的实现,你应该在jmeter.log文件中看到Assertion Ended
消息,但是它不会发生因为assert
失败
如果您修改代码以捕获AssertionError,如:
log.info('Assertion Start')
try {
assert 'foo'.equals('bar') : "Failure here"
}
catch (AssertionError e) {
log.info(e.getMessage())
}
log.info('Assertion Ended')
你会看到AssertionError message和Assertion Ended
声明
有关在JMeter中使用JSR223断言的更多信息,请参阅Scripting JMeter Assertions in Groovy - A Tutorial
以上是关于Jmeter-仅在请求或断言失败时打印日志的主要内容,如果未能解决你的问题,请参考以下文章
如何在超测失败时打印请求日志(如请求 url、请求正文、请求 queryParam)?