Jmeter-仅当请求或断言失败时才打印日志

Jmeter-仅当请求或断言失败时才打印日志,jmeter,jsr223,Jmeter,Jsr223,下面是JSR223断言groovy代码,我们仅在请求或断言失败或两者都失败时才尝试进行日志记录 import groovy.json.JsonSlurper String jsonString = SampleResult.getResponseDataAsString(); String StartProcessResponseCode= SampleResult.getResponseCode(); def tokenJSON = new JsonSlurper().parseText(j

下面是JSR223断言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())
}
}


但是在这种情况下,没有记录任何断言失败的错误首先,如果您想捕获断言的所有信息,您应该转而使用,因为侦听器是在断言之后执行的,因此它保证您在检查之前应用所有断言

关于这个问题本身,我的期望是,您的断言逻辑在抛出未处理语句的
assert
语句上失败,您的测试根本无法继续

请参见以下示例:

log.info('Assertion Start')
assert 'foo'.equals('bar')
log.info('Assertion Ended')
根据您已经实现的内容,您应该在jmeter.log文件中看到
断言已结束
消息,但是它不会发生,因为
断言
失败

如果您修改代码以捕获断言错误,如:

log.info('Assertion Start')
try {
    assert 'foo'.equals('bar') : "Failure here"
}
catch (AssertionError e) {
    log.info(e.getMessage())
}
log.info('Assertion Ended')
您将看到和
断言结束
语句

有关在JMeter中使用JSR223断言的更多信息,请参阅