JDBC 与 Bean Shell的使用(二)获取值,并且断言
这里我们使用的断言方式是BeanShell断言,做一个新增功能的接口测试,
1.发一个post请求,新增测试数据,然后做一个返回数据的响应断言-------大部分人都可以实现这个功能
2.如果是后台业务的话,我们的数据时会录入到后端数据库的,那么这里我们使用JDBC后置处理器,来获取数据
3.获取数据后,我们怎么来比较我们取得值是否和数据库中的一致呢----这里我们引用BeanShell断言
String name = vars.getObject("devName").get(0).get("name"); //获取SQL查询到的name,有时候会报错declaration----解决办法String改Object log.info("name结果是:"+name); //打印log,方便调试 vars.put("resdevName",name.toString()); //把name值传给resdevName,方便后续使用,和正则表达式提取器一样 String nameExp = "${name}"; //赋值,期望的name值。这里我传的是一个动态的值,用户定义的变量 log.info("nameExp结果是:"+nameExp); vars.put("ExpDevName",nameExp.toString()); if(!name.equals(nameExp)) { //这里是比较语句,如果相等的话,断言成功-正常通过,如果不相等,断言失败-爆红色error Failure = true; FailureMessage = "error,check error"; } else { FailureMessage = "ok,check current"; }
4.运行查看结果,这里的Debug Sampler中记录了值,故意在比较的时候加了一个“1”看一下失败的效果
扩展:
当然我们也可以多次断言,也可以获取select中的多个值
Object status = vars.getObject("status").get(0).get("status").toString(); log.info("上线状态的status是多少"+status); String statusExp = "1"; log.info("上线状态的statusExp希望是"+statusExp); Object valid_status = vars.getObject("status").get(0).get("valid_status").toString(); log.info("上线状态的valid_status是多少"+valid_status); String valid_statusExp = "1"; log.info("上线状态的valid_statusExp希望是"+valid_statusExp); Object name = vars.getObject("status").get(0).get("name").toString(); log.info("上线状态的name是多少"+name); String nameExp = "${editName}"; //这里的值取得是编辑后的editName,如果是直接新增的话,应该是newName log.info("上线状态的nameExp希望是"+nameExp); if((!valid_status.equals(valid_statusExp))||(!status.equals(statusExp))||(!name.equals(nameExp))) { //所有条件都满足才通过,否则error Failure = true; FailureMessage = "${status} != ${statusExp}"; } else { FailureMessage = "ok,check current"; } //本次有2个JDBC后置处理器需要处理,使用了2个判断;不知道有没有跟高级的写法 Object name_new = vars.getObject("name_version").get(0).get("name").toString(); log.info("上线状态后编辑的name_new是多少"+name_new); String name_newExp = "${onlineName}"; log.info("上线状态后编辑的name_newExp希望是"+name_newExp); Object version = vars.getObject("name_version").get(0).get("version").toString(); log.info("上线状态后编辑的version是多少"+version); String versionExp = "2"; log.info("上线状态后编辑的versionExp希望是"+versionExp); if((!valid_status.equals(valid_statusExp))||(!status.equals(statusExp))) { Failure = true; FailureMessage = "${status} != ${statusExp}"; } else { FailureMessage = "ok,check current"; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix