Jmeter之BeanShell 断言
作者:季沐测试笔记
原文地址://www.cnblogs.com/testero/p/15436864.html
博客主页://www.cnblogs.com/testero
1 BeanShell 断言之实例介绍
1.1 假设当前有个判断该用户是否为新用户的接口,返回的数据格式为以下内容:
{
"success": true,
"code": 0,
"msg": "success",
"data": {
"newUser": true,
"invitationCode": null
},
"total": 0
}
-
当用户为新用户时,newUser的值为true
-
当用户已是老用户时,newUser的值为false
1.2 假设有两为用户:15293561001为老用户,15293561002为新用户,现需要对改接口返回的数据进行验证,看是否达到预期效果,在Jmeter断言中选择BeanShell 断言
BeanShell中的脚本内容的验证就是根据用户判断newUser的值是否正确,这里会用到BeanShell断言的一些语法,只需要判断下后定义下断言失败或是成功即可,断言内容为以下内容
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
prev.setDataEncoding("UTF-8");
String result = prev.getResponseDataAsString();
String result = prev.getResponseDataAsString();
System.out.println("------------------------------------------------------");
JSONObject response = JSON.parseObject(result);
System.out.println("response为"+response);
JSONObject data = (JSONObject) response.get("data");
System.out.println("data为"+data);
System.out.println("mobile为"+"${mobile}");
System.out.println("newUser为"+data.get("newUser"));
if ( "${mobile}" == "15293561001") {
if (data.get("newUser").toString().equals("false")){
Failure = false;
FailureMessage = "断言成功";
}else {
Failure = true;
FailureMessage = "断言失败,newUser为"+data.get("newUser");
}
}else if ("${mobile}" == "15293561002"){
if (data.get("newUser").toString().equals("true")){
Failure = false;
FailureMessage = "断言成功";
}else {
Failure = true;
FailureMessage = "断言失败,newUser为"+data.get("newUser");
}
}
断言中15293561001判断的newUser为false,15293561002判断的newUser为true,该断言应该完全通过,循环请求该接口,察看结果树
两条数据都是断言通过
下面我们将15293561002的newUser断言处改为false,执行效果如下
可以看到显示出了之前定义的断言失败的信息和接口返回的该字段的实际结果。
2 断言语法介绍
示例:
if (data.get("newUser").toString().equals("true")){
Failure = false;
FailureMessage = "断言成功";
}else {
Failure = true;
FailureMessage = "断言失败,newUser为"+data.get("newUser");
}
以上断言信息中Failrue用来标识断言失败,Failure = false;时表示断言成功
FailureMessage标识断言失败的原因