jmeter压测学习35-添加 BeanShell 断言

前言

jmeter 的断言插件有很多,如果我们想提取返回的json值里面的内容去断言,可以用到 BeanShell 断言

BeanShell 断言

在请求后添加-断言-BeanShell 断言

接口返回的json内容

{
"code":0,
"msg":"login success!",
"username":"test",
"token":"8d67474dacf7e6df014183b604c58ffe5a8e144f"
}

解析json

在 BeanShell断言添加解析json的脚本,prev是表示当前的请求对象,从prev获取返回的数据,然后json解析提取对应的值

import org.json.JSONObject;
import org.json.JSONArray;

String response = prev.getResponseDataAsString();
JSONObject responseJson = new JSONObject(response);
String msg = responseJson.getString("msg");
log.info("msg的值:" + msg);

运行后会报错:Typed variable declaration : Class: JSONObject not found in namespace

2021-01-04 15:02:34,634 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file:
inline evaluation of: ``import org.json.JSONObject; import org.json.JSONArray;
String response = prev. . . . '' :
Typed variable declaration : Class: JSONObject not found in namespace
2021-01-04 15:02:34,635 WARN o.a.j.a.BeanShellAssertion: org.apache.jorphan.util.JMeterException:
Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.json.JSONObject;
import org.json.JSONArray; String response = prev. . . . '' :
Typed variable declaration : Class: JSONObject not found in namespace

这个是因为没有json.jar包,需自己下载一个json.jar放到jmeter的lib目录下

json.jar放到jmeter的lib目录下后重启jmeter ,再次运行就可以看到获取到返回的值了

添加断言

添加断言,判断获取的字符串跟预期的字符串相等”login success!”。

import org.json.JSONObject;
import org.json.JSONArray;

String response = prev.getResponseDataAsString();
JSONObject responseJson = new JSONObject(response);
String msg = responseJson.getString("msg");
log.info("msg的值:" + msg);

//添加断言
if (!msg.equals("login success!")) {
log.info("接口返回:"+response);
Failure=true ;
FailureMessage = "断言失败,返回的内容:"+msg;
return;
}

判断相等用msg.equals(“预期结果”),判断不相等前面加!

2021年第六期《python接口自动化+测试开发》课程,1月9号开学(火热报名中!)

本期上课时间:1月9号-4月18号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • jmeter压测学习34-签名sign(BeanShell 预处理程序)

    前言 一般公司对外的接口都会用到sign签名,对不同的客户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求. 之前讲过用python代码实现sign签名,这次介绍jmete ...

  • jmeter压测学习2-linux运行jmeter环境

    前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在linux服务器上使用jmeter做压力测试. 本篇记录下linux上搭建jmeter环境,以及运行jmeter脚本,查看报告 ...

  • jmeter压测学习5-XPath提取器

    前言 有些web项目是前后端不分离的,返回的内容不是那种纯进口返回json格式,返回的是一个HTML页面. 并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数,如:csrfmidd ...

  • jmeter压测学习4-正则表达式提取

    前言 上一个接口返回的token作为下个接口的入参,除了前面一篇讲到的用json提取器提取,也可以用正则提取. json提取器只能提取json格式的数据,正则可以匹配任意的返回. 我现在有一个登陆接口 ...

  • jmeter压测学习3-提取json数据里面的token参数关联

    前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有 ...

  • jmeter压测学习7-登录参数化(CSV 数据文件设置)

    前言 我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况. 如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有 ...

  • jmeter压测学习8-压测带token的接口

    前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口. 比如我现在要压测一个修改用户的个人信息接口,每个用 ...

  • jmeter压测学习11-模拟浏览器访问web页面

    前言 在做性能测试的时候,有时候我们希望测试用户访问一个web页面的加载时间,使用 jmeter 压测的话,需模拟浏览器的行为,加载整个页面的内容. 包含一些js,css,png图片资源等文件的加载. ...

  • jmeter压测学习14-jmeter返回内容中文乱码问题

    前言 在使用 jmeter 测试的时候,有些 html 页面返回的中文内容显示乱码,导致无法正常查看中文的内容 乱码场景 在打开百度页面时,返回的html内容中文显示乱码,如下图所示 出现乱码的原因, ...