热门搜索 :
考研考公
您的当前位置:首页正文

jmeter之beanshell断言实例

来源:伴沃教育
jmeter之beanshell断⾔实例

.⾸先储存⼀个接⼝的响应结果,⽐如在http请求的后⾯添加beanshell后置处理器(BeanShell PostProcessor)来储存http请求的响应结果:

1 import org.json.*; 2

3 //获取上⼀个请求的返回值

4 String response = prev.getResponseDataAsString(); 5 //将返回值转换为json

6 JSONObject responseJson = new JSONObject(response); 7 //获取responseMessage

8 String message = responseJson.getString(\"responseMessage\"); 9 log.info(\"message的值:\" + message);10

11 //使⽤vars.put()⽅法储存变量message12 vars.put(\"message\13 //获取titleLink

14 String titleLink = responseJson.getJSONObject(\"data\").getString(\"titleLink\");15 log.info(\"titleLink的值:\" + titleLink);16 //使⽤vars.put()⽅法储存变量message17 vars.put(\"titleLink\

在后⾯的其他接⼝中如何需要使⽤变量message和titleLink,可以使⽤${message}和${titleLink}来获取变量的值;

变量储存好后,在需要断⾔的接⼝后⾯添加BeanShell断⾔,使⽤Failrue来标识断⾔失败,FailureMessage标⽰断⾔失败的原因,如:

1 //使⽤vars.get()⽅法获取变量的值

2 String message= vars.get(\"message\");3

4 if(!message.equals(\"success\")) {5 Failure = true;

6 FailureMessage = \"规则解析失败\";7 }else{

8 FailureMessage = \"规则解析成功\";9 }

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.直接在需要断⾔的接⼝后⾯使⽤beanshell断⾔,使⽤Failrue来标识断⾔失败,FailureMessage标⽰断⾔失败的原因,如:

1 import org.json.*; 2

3 //获取上⼀个请求的返回值

4 String response = prev.getResponseDataAsString(); 5 //将返回值转换为json

6 JSONObject responseJson = new JSONObject(response); 7 //获取responseMessage

8 String message = responseJson.getString(\"responseMessage\"); 9 log.info(\"message的值:\" + message);10

11 if(!message.equals(\"success\")){12 Failure = true;

13 FailureMessage = \"规则解析失败,message不等于success\";14 return;15 }16

17 //获取titleLink

18 Object titleLink = responseJson.getJSONObject(\"data\").get(\"titleLink\");19 log.info(\"titleLink的值:\" + titleLink.toString());20 21

22 if(titleLink.toString().equals(\"null\") || \"\".equals(titleLink)){23 Failure = true;

24 FailureMessage = \"规则解析失败,titleLink为空\";

25 }else if(!titleLink.toString().startsWith(\"http\") && !titleLink.toString().startsWith(\"https\")){26 Failure = true;

27 FailureMessage = \"规则解析失败,titleLink不为空,但是不是以http或者https开头的\";28 }

接⼝的响应数据为:

1 {

2 : \"responseCode\":\"1\

3 : \"responseMessage\":\"success\ 4 : \"responseType\":null, 5 : \"data\": 6 : {

7 : : \"city\":\"上海\ 8 : : \"rentUnit\":\"⽉\

9 : : \"source\":\"个⼈房源⽹\

10 : : \"title\":\"徐盈路1188弄徐泾青浦徐泾租房\11 : : \"belonger\":\"个⼈\12 : : \"housingType\":\"住宅\13 : : \"floor\":\"⾼层\

14 : : \"rentPrice\":\"17000\

15 : : \"titleLink\":\"http://sh.grfy.net/rent/d-34612565.html\16 : : \"decoration\":null,17 : : \"direction\":null,18 : : \"isSplit\":\"否\19 : : \"imgs\":null,

20 : : \"publishTime\":\"2018-07-25T23:20:33.471\21 : : \"contactMobile\":null,

22 : : \"website\":\"http://sh.grfy.net/rent/list_2_0_0_0-0_0_0-0_0_2_0_{}_.html\23 : : \"address\":\"徐泾\

24 : : \"contactName\":\"王⼥⼠\25 : : \"houseType\":\"4室2厅2卫\26 : : \"estate\":\"徐泾\27 : : \"roomArea\":\"177\

28 : : \"collectHouseType\":\"住宅\29 : : \"collectType\":\"出租\30 : : \"district\":\"青浦\

31 : : \"totalFloor\":\"共20层\32 : : \"region\":\"上海\33 : : \"isRegister\":\"否\

34 : : \"desc\":\"仁恒西郊花园 4室2厅2卫 房屋亮点 新上 配套齐全 有阳台 ⾸次出租 随时看房 出租要求 ⼀家⼈ ⼀年起租 租户稳定 作息正常 房源描述⼩区环境好,物业管理成熟,私⼈会所实施配套齐全,临近地铁17号徐盈站,周边多所国际学校,35 : }36 }

断⾔失败如下:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top