Beanshell断言
常用对象
1、vars:实际引用Jmeter线程的局部变量,连通Jmeter和beanshell(本质上是个map)
vars.get(String key)//获取字符串变量值
vars.put(String key,String value)//存储value到变量key
vars.putObject("object_name", Object);//保存对象(包括List, Map, closure之类)
vars.getObject("OBJECT_NAME");//读取对象
2、log:写入信息到日志中
log.info("")
3、prev:获取前一个sample的响应
prev.getResponseDataAsString():以字符串形式获取响应信息
prev.getResponseCode():获取状态码
4、props:HashTable对象,可以跨线程组使用
props.put("some_variable',vars.get("some_variable"))
常用脚本
import org.json.*;
String response = prev.getResponseDataAsString();//获取前一个sample的响应
//log.info("response的值:" + response);//将返回值转换为json对象
JSONObject responseJson = new JSONObject(response); // jison字符串转JSON对象 {}
JSONObject dataObj= responseJson.getJSONObject("data"); // 获取data对象 {}
JSONArray answersArr= dataObj.getJSONArray("answers"); // 获取answers数组 []
Failure=true;//标记该断言失败
FailureMessage="内容检查失败";//在log中输出失败原因
JSONObject和JSONArray区别及基本用法
JSONObject的数据是用 { } 来表示的,
例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }
JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , ...... , { } ] 来表示
例如: [ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;
如何从字符串String获得JSONObject对象和JSONArray对象
JSONObject jsonObject = new JSONObject (String str);
JSONArray jsonArray = new JSONArray(String str ) ;
如何从JSONArray中获得JSONObject对象
大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
JSONObject jsonObject = jsonArray.getJSONObject(i) ; (常用)
两者都可。第一种注意转换
获取JSON内的数据
int jid= jsonObject.getInt ( "id" ) ; // 这里的jid得到的数据就是123.
String jcourse=jsonObject.getString( "courseID") ; // 这里的jcourse得到的数据就是huangt-test.
Strirng jcourse = jsonObject.get("courseID").toString();
设置JSON内的数据
jsonObject.put("courseID", "要修改成的值")
JSON对象转字符串
String jsonStr = jsonObject.toString();