如何解决如何在JMeter中以CSV格式保存多个断言失败结果
我已经在 JSR223 断言中编写了脚本,并希望以 CSV 格式保存多个断言失败结果。如何在 JMeter 中实现这一点?
下面是脚本
def responseJson = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def lastName = responseJson.data[0].last_name
def email = responseJson.data[0].email
def firstName = responseJson.data[0].first_name
if (email != 'test') {
def subResult = new org.apache.jmeter.assertions.AssertionResult()
subResult.setFailure(true)
subResult.setFailureMessage("Incorrect email value,Correct value is-->" + email)
prev.addAssertionResult(subResult)
}
if (lastName != 'Lawson') {
def subResult = new org.apache.jmeter.assertions.AssertionResult()
subResult.setFailure(true)
subResult.setFailureMessage("Incorrect last name value,Correct value is-->" + lastName)
prev.addAssertionResult(subResult)
}
if (firstName != 'test') {
def subResult = new org.apache.jmeter.assertions.AssertionResult()
subResult.setFailure(true)
subResult.setFailureMessage("Incorrect first name value,Correct value is-->" + firstName)
prev.addAssertionResult(subResult)
}
else {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("correct value")
prev.addAssertionResult(AssertionResult)
}
if (prev.getAssertionResults().findAll { result -> result.isFailure() }.size() > 0) {
prev.setSuccessful(false)
}
以下是 JSON:
{ "per_page": 6,"total": 12,"data": [ { "last_name": "Lawson","id": 7,"avatar": "https://reqres.in/img/faces/7-image.jpg","first_name": "Michael","email": "michael.lawson@reqres.in" },{ "last_name": "Ferguson","id": 8,"avatar": "https://reqres.in/img/faces/8-image.jpg","first_name": "Lindsay","email": "lindsay.ferguson@reqres.in" },{ "last_name": "Funke","id": 9,"avatar": "https://reqres.in/img/faces/9-image.jpg","first_name": "Tobias","email": "tobias.funke@reqres.in" },{ "last_name": "Fields","id": 10,"avatar": "https://reqres.in/img/faces/10-image.jpg","first_name": "Byron","email": "byron.fields@reqres.in" },{ "last_name": "Edwards","id": 11,"avatar": "https://reqres.in/img/faces/11-image.jpg","first_name": "George","email": "george.edwards@reqres.in" },{ "last_name": "Howell","id": 12,"avatar": "https://reqres.in/img/faces/12-image.jpg","first_name": "Rachel","email": "rachel.howell@reqres.in" } ],"page": 2,"total_pages": 2,"support": { "text": "To keep ReqRes free,contributions towards server costs are appreciated!","url": "https://reqres.in/#support-heading" } }
解决方法
我认为您无法使用“您编写的”代码在 AssertionResults 中为单个采样器存储多个 .jtl results file,我的期望是您需要迁移到SampleResult.addSubResult() 函数,类似于:
def responseJson = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def lastName = responseJson.data[0].last_name
def email = responseJson.data[0].email
if (email != 'test') {
def subResult = new org.apache.jmeter.samplers.SampleResult()
subResult.setSuccessful(false)
subResult.setResponseMessage("Incorrect email value" + email)
prev.addSubResult(subResult)
}
if (lastName != 'test') {
def subResult = new org.apache.jmeter.samplers.SampleResult()
subResult.setSuccessful(false)
subResult.setResponseMessage("Incorrect lastName value" + email)
prev.addSubResult(subResult)
} else {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("correct value")
prev.addAssertionResult(AssertionResult)
}
if (prev.getSubResults().findAll { result -> !result.isSuccessful() }.size() > 0) {
prev.setSuccessful(false)
}
更多信息:Top 8 JMeter Java Classes You Should Be Using with Groovy
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。