如何在 JMeter 中的单个脚本中对多个字段执行验证

时间:2021-07-15 11:18:11

标签: jmeter assertion

我试图执行下面的代码来验证两个字段的姓氏和电子邮件,如果条件与 JMeter 中的 JSR223 断言中的 if 语句匹配,则获取这两个字段的结果。但我只收到第二个条件(姓氏)的错误。不适用于电子邮件和姓氏。有人可以帮忙吗?

def responseJson = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def lastName = responseJson.data[0].last_name
def email = responseJson.data[0].email
如果(电子邮件!= '测试'){
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("不正确的电子邮件值" + 电子邮件)
}
if (lastName !='test') {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("姓氏值不正确\n" + lastName)
}

其他
{ AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("正确值");
}
下面是 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, "sup port": { "text": "为了保持 ReqRes 免费,感谢对服务器成本的贡献!", "url": "https://reqres.in/#support-heading" } }

1 个答案:

答案 0 :(得分:1)

尝试按如下方式修改您的代码:

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.assertions.AssertionResult()
    subResult.setFailure(true)
    subResult.setFailureMessage("Incorrect email value" + email)
    prev.addAssertionResult(subResult)
}
if (lastName != 'test') {
    def subResult = new org.apache.jmeter.assertions.AssertionResult()
    subResult.setFailure(true)
    subResult.setFailureMessage("Incorrect last name value\n" + lastName)
    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)
}

在上面的代码中,prev 代表 previous SampleResult 类实例,可让您访问其所有可用功能。请参阅 Top 8 JMeter Java Classes You Should Be Using with Groovy 文章,了解有关此 JMeter API 和其他 JSR223 Test Elements 速记的更多信息。