jmeter使用BeanShell断言
1. 首先存储一个接口的响应结果,如在http请求的BeanShell PostProcessor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.io.UnsupportedEncodingException; System.out.println(prev.getResponseCode()); String str = prev.getResponseDataAsString(); /* String result = ${__urldecode(str)}; System.out.println("------------"+result); */ String result = "" ; try { result = java.net.URLDecoder.decode(str, "UTF-8" ); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println( "--------" +result); vars.put( "result" ,result); log.info(result); |
或者是jdbc request中BeanShell PostProcessor:
1 2 | columnValue = vars.getObject( "testresultvariable" ).get( 0 ).get( "app_id" ); vars.put( "value" ,columnValue); |
变量存储好后,再需要断言的接口后面添加BeanShell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:
1 2 3 4 5 6 7 8 | String result = vars.get( "result" ); if (!result.contains( "\"result\":2" )) { Failure = true ; FailureMessage = "分润查询失败" ; } else { FailureMessage = "分润查询成功" ; } |
断言结果是:
使用第三方jar包,结合fastjar的JSON解析如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.*; import com.jmeter.*; listexc = new ArrayList(); listexc.add( 351 ); listexc.add( 301 ); listexc.add( 302 ); listexc.add( 304 ); listexc.add( 305 ); listexc.add( 306 ); list = new ArrayList(); flag = "false" ; if ((prev.getResponseCode() != null ) && (prev.getResponseCode().equals( "200" ) == true )) { String json = prev.getResponseDataAsString(); JSONObject jo = JSON.parseObject(json); if (jo.containsKey( "events" )) { JSONArray ja = jo.getJSONArray( "events" ); if (ja.size()> 0 ) { flag = "true" ; for ( int i = 0 ;i<ja.size();i++) { System.out.println(ja.get(i)); JSONObject joe = ja.getJSONObject(i); System.out.println(joe.get( "eventId" )); list.add(joe.get( "eventId" )); } System.out.println(list.size()); System.out.println( new EventCompare().compare(listexc,list)); if (! new EventCompare().compare(listexc,list)){ Failure = true ; FailureMessage = "事件校验失败,预期结果和实际结果不一致,预期事件:" +listexc+ " ,实际事件:" +list; } } else { flag = "false" ; Failure = true ; FailureMessage = "事件校验失败,轮询接口返回没有eventId" ; } vars.put( "result" ,flag); System.out.println(list.size()); /* System.out.println(listexc.containsAll(list)); if(listexc.containsAll(list)) { Failure = true; FailureMessage = "事件校验失败"; } */ } else { Failure = true ; FailureMessage = "事件校验失败,轮询接口返回没有events" ; } } else { Failure = true ; FailureMessage = "事件校验失败,轮询接口返回空" ; } |
******************************************************************************************************************************************
作者:乔叶叶
博客地址:http://www.cnblogs.com/qiaoyeye/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
******************************************************************************************************************************************
作者:乔叶叶
博客地址:http://www.cnblogs.com/qiaoyeye/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
******************************************************************************************************************************************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2015-06-08 selenium处理滚动条
2015-06-08 selenium处理div生成弹框