这篇文章用来记录在Jmeter中beanshell的学习以及学习beanshell过程中遇到的问题。

一、Jmeter中的beanshell

在Jmeter中,BeanShell有多种,其作用不同:

BeanShell断言            //用于断言

BeanShell前置处理器   //提前生成取样器中需使用的参数,存储在vars里。方便后续调用。

BeanShell后置处理器   //提取返回参数,或用于后面的接口使用

BeanShell监听器

BeanShell定时器

BeanShell取样器

BeanShell断言
import org.json.*; String response_data=prev.getResponseDataAsString();
JSONObject responseBody = new JSONObject(response_data); String code = responseBody.get("code").toString();
if(code.equals("200"))
{
Failure = false;
FailureMessage = "断言通过";
}else{
Failure = true;
FailureMessage = "断言不通过:返回的code不是200";
} BeanShell前置处理器
public static String test()
{
//在后面可以使用${key}或vars.get("key")来获取值。下面的imgurl同理。
vars.put("key","${dir}/${__time(,)}.jpg");
vars.put("imgurl","https://www.aliyuncs.com/"+vars.get("key")); return "success";
}
test(); //执行test方法 BeanShell后置处理器
import org.json.*; String response_data=prev.getResponseDataAsString();
JSONObject responseBody = new JSONObject(response_data); String access_key_id = responseBody.get("data").get("access_key_id").toString();
String policy = responseBody.get("data").get("policy").toString();
String signature = responseBody.get("data").get("signature").toString();
String dir = responseBody.get("data").get("dir").toString();
String host = responseBody.get("data").get("host").toString();
String callback = responseBody.get("data").get("callback").toString();
vars.put("access_key_id",access_key_id);
vars.put("policy",policy);
vars.put("signature",signature);
vars.put("dir",dir);
vars.put("host",host);
vars.put("callback",callback);

  

二、注意事项

注意1:BeanShell断言 和 BeanShell后置处理器 的区别

  BeanShell后置处理器不能用来断言取样器。即使代码可以像在BeanShell断言中那样写,但是不会发挥作用。举个例子,就算写了Failure = true,但是在查看结果树中也不会认为它是失败的。所以不要认为BeanShell都是一样的哦~

注意2:一般情况下都需要取服务器返回的数据,需要用到json

下载包地址:点击这里,下载好的json-20160810.jar包放入Jmeter安装目录/lib/ext,然后重启Jmeter即可~

三、使用过程中问题集锦

问题1:JSONObject not found in namespace

流程:在beanshell下写代码如下:

1 String response_data = prev.getResponseDataAsString();
2 JSONObject data_obj = new JSONObject(response_data);
3
4 String current_page = data_obj.get("data").get("current_page").toString();
5 log.info("当前第几页:"+current_page)

报错:Typed variable declaration : Class: JSONObject not found in namespace

报错内容已经说得很明确了,在命名空间里没有找到JSONObject。而我却在使用,肯定报错。

解决方法:点击下载jar包,放入jmeter安装目录/lib/ext即可。然后在beanshell中写入:import org.json.*; 引用即可

问题2:Typed variable declaration

流程:在beanshell下写代码如下:

import org.json.*;

String response_data=prev.getResponseDataAsString();
JSONObject responseBody = new JSONObject(response_data); String code = responseBody.get("code");

报错:Sourced file: inline evaluation of: ``import org.json.*; String response_data=prev.getResponseDataAsString(); JSONObj . . . '' : Typed variable declaration

一开始我以为是json包里没有jsonobject的方法。经过逐行注释,发放报错的地方在于String code = responseBody.get("code"); 于是想到可能是类型不匹配;

解决方法:修改获取code那句代码为 String code1 = responseBody.get("code").toString();

Jmeter BeanShell断言的更多相关文章

  1. jmeter BeanShell断言(一)

    原文地址https://blog.csdn.net/lijing742180/article/details/81157947 原文地址https://blog.csdn.net/zailushang ...

  2. (jmeter内置可调用的变量)jmeter beanShell断言

    用户可以在jmeter- “beanShell断言”中自定义断言.自由灵活的用脚本实现自己的断言  beanShell断言接口介绍  在beanShell中直接可以调用的变量,无需加前缀.  1.lo ...

  3. jmeter beanshell断言接口自动化实例

    一.JMeter介绍 Apache JMeter是一款优秀的开源性能测试工具,在国外无论是在性能测试还是接口测试领域都有着非常高的使用率,但由于本身没有完善的中文文档以及典型开源工具特点(界面不美观) ...

  4. jmeter BeanShell断言(四)

    Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...

  5. jmeter BeanShell断言(三)数据处理

    在做接口测试时,对响应数据的校验是非常重要的部分:在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言.BeanShell断言等等,BeanShell断言可以自定义断言,自由灵 ...

  6. Jmeter beanshell断言 org.json.jar包下载

    链接:https://pan.baidu.com/s/1O01ODjlKyqmz2NyDT0MCww 提取码:a5va 欢迎关注微信公众号:软件测试汪,qq技术交流群:809111560

  7. jmeter BeanShell实例-----两个变量之间的断言对比

    jmeter BeanShell实例-----两个变量之间的断言对比 在jmeter的中,断言没法对两个变量的进行对比后判断,只能使用Bean Shell断言来进行,总是有人来问怎么写呢.这里写一个简 ...

  8. JMeter中BeanShell断言使用一

    Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面 首先必须给beanshell断言添加FailureMessage if(${TotalClient_SS ...

  9. Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面

    首先必须给beanshell断言添加FailureMessage if(${TotalClient_SS}+2!=${TotalClient_SS2}){Failure=true;       Fai ...

随机推荐

  1. 齿轮 HYSBZ - 4602 (DFS实现)

    齿轮 HYSBZ - 4602 题意:很好理解就不啰嗦了. 致谢:感谢队友小明. 题解:嗯,一开始想到的是并查集,后来,就先看了另一道题,xj写dfs和暴力,就卡死了.于是来补这题了,前向星建图 题解 ...

  2. 爬虫之获取猫眼电影10W评论

    第一步 打开一个电影的评论界面: 哪吒之魔童降世:https://maoyan.com/films/1211270 我们发现这里只显示10条评论,而我们需要爬取10w条数据,所以不能从此页面进行抓包, ...

  3. 第五章、web服务器

    一.web服务器 Web服务器就是整个万维网的骨干,广义上来说Web服务器既可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备和计算机.我们在网络上获取的所以资源,都需要有服务器来 ...

  4. [线性代数] 线性子空间入門 Basic Vector Subspaces

    导语:其他集数可在[线性代数]标籤文章找到.线性子空间是一个大课题,这里先提供一个简单的入门,承接先前关于矩阵代数的讨论,期待与你的交流. Overview: Subspace definition ...

  5. gitlab怎么用

    0101在个人资料里面去设置去找密钥.... 0102 点击生成密钥 0103 在文件夹的命令行输入 ssh-keygen -t rsa -C "your.email@example.com ...

  6. 2018-2019-2 20165234 《网络对抗技术》 Exp8 网络欺诈防范 Web基础

    Exp8 网络欺诈防范 Web基础 一. 实践内容 1. Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. 2. Web ...

  7. chrome dev

    chrome://plugins 为什么无法打开? Chrome插件问答 2018-03-02 13:34     最后又很多网友在我们 chrome插件 网反应说chrome://plugins 无 ...

  8. GitHub上最著名的Android播放器开源项目大全

    GitHub上最著名的Android播放器开源项目大全                                                                          ...

  9. ISO/IEC 9899:2011 条款6.3.1——算术操作数

    6.3.1 算术操作数 6.3.1.1 布尔.字符以及整数 1.每个整数类型具有一个整数转换等级,如下定义: ——两个带符号的整数类型都不应该具有相同等级,即使它们具有相同的表示. ——一个带符号整数 ...

  10. mxnet深度学习实战学习笔记-9-目标检测

    1.介绍 目标检测是指任意给定一张图像,判断图像中是否存在指定类别的目标,如果存在,则返回目标的位置和类别置信度 如下图检测人和自行车这两个目标,检测结果包括目标的位置.目标的类别和置信度 因为目标检 ...