jmeter-BeanShell预处理器与BeanShell后置处理器的使用

这篇具有很好参考价值的文章主要介绍了jmeter-BeanShell预处理器与BeanShell后置处理器的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jmeter-BenaShell的使用

BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的松散类型、命令、闭包等通用脚本来对其进行拓展。
前置处理器:请求发送之前对请求参数做一些处理
后置处理器:请求发送完成之后对响应数据进行处理

BeanShell Sampler 取样器
BeanShell PreProcessor 预处理程序
BeanShell PostProcessor BeanShell后置处理器,主要用来对响应数据进行处理
BeanShell Assertion BeanShell断言,主要对后端返回的比较复杂的数据,要进行复杂的业务逻辑处理,进行断言。
_BeanShell 函数

设置随机数
数据加密
响应报文数据提取
数据库数据提取
复杂逻辑结构断言

BeanShell预处理器-随机生成数据

例子:某一平台下的新增接口,随机生成新增的数据
jmeter-BeanShell预处理器与BeanShell后置处理器的使用
jmeter-BeanShell预处理器与BeanShell后置处理器的使用

//随机生成一个用户名
public static String getUsername(int length) {
	String str = "abcdefghijklmnopqrstuvwxyz";
	Random random = new Random();
	StringBuffer sb = new StringBuffer();
	for(int i = 0; i < length; i++){
		//生成一个随机的int值
	     int number = random.nextInt(str.length());
		sb.append(str.charAt(number));
	}
	String username = "wangmin" + sb;
	return username.toString();
}

//随机生成一个序列号
public static String getorganizationCode(int length){
	String str = "0123456789";
	Random random = new Random();
	StringBuffer sb = new StringBuffer();
	for(int i = 0; i < length; i++){
		int number = random.nextInt(str.length());
		sb.append(str.charAt(number));
	}
	String organizationCode = "009" + sb;
	return organizationCode.toString();
}


String name = getUsername(3);
log.info(name);
vars.put("name",name);

String organizationCode = getorganizationCode(6);
log.info(organizationCode);
vars.put("organizationCode",organizationCode);

结果:每次运行均随机产生不同数据,运行结果正确,响应状态码:200,message:success

{"errorcode":0,"message":"success!","data":{"operatorId":"2107","name":"wangmingdq","address":"详细地址","contacts":"汪敏","phone":"17664012113","proprietorship":null,"organizationCode":"009051270","longitude":118000000,"latitude":39000000,"status":5,"type":null,"provinceId":"356","cityId":"357","countyId":"358","append":"","createTime":1620457032,"updateTime":1620457032,"imageId":null,"imageUrl":""}}
{"errorcode":0,"message":"success!","data":{"operatorId":"2107","name":"wangmingdq","address":"详细地址","contacts":"汪敏","phone":"17664012113","proprietorship":null,"organizationCode":"009051270","longitude":118000000,"latitude":39000000,"status":5,"type":null,"provinceId":"356","cityId":"357","countyId":"358","append":"","createTime":1620457032,"updateTime":1620457032,"imageId":null,"imageUrl":""}}

BeanShell后置处理器-提取响应内容置于log中

jmeter-BeanShell预处理器与BeanShell后置处理器的使用

//提取响应内容
String statusCode = prev.getResponseCode(); //获取响应代码
String response_body = prev.getResponseDataAsString(); //获取响应body内容
String response_headers = prev.getResponseHeaders();   //获取响应头
String response_reason = prev.getResponseMessage();   //获取响应信息

log.info("=====响应代码:=====>>"+statusCode);
log.info("=====响应body:=====>>"+response_body);
log.info("=====响应头:=====>>"+response_headers);
log.info("=====响应信息:=====>>"+response_reason);

bin下的jmeter.log
jmeter-BeanShell预处理器与BeanShell后置处理器的使用文章来源地址https://www.toymoban.com/news/detail-416456.html

2021-05-08 15:19:37,411 INFO o.a.j.u.BeanShellTestElement: =====响应代码:=====>>200
2021-05-08 15:19:37,411 INFO o.a.j.u.BeanShellTestElement: =====响应body:=====>>{"errorcode":0,"message":"success!","data":{"operatorId":"2109","name":"wangminmjf","address":"详细地址","contacts":"汪敏","phone":"17664012113","proprietorship":null,"organizationCode":"009582005","longitude":118000000,"latitude":39000000,"status":5,"type":null,"provinceId":"356","cityId":"357","countyId":"358","append":"","createTime":1620458377,"updateTime":1620458377,"imageId":null,"imageUrl":""}}
2021-05-08 15:19:37,412 INFO o.a.j.u.BeanShellTestElement: =====响应头:=====>>HTTP/1.1 200 
Server: nginx/1.15.6
Date: Sat, 08 May 2021 07:19:38 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Application-Context: server-gateway:docker:8506
apiRemark: %E4%BF%9D%E5%AD%98%E8%BF%90%E8%90%A5%E5%95%86%E4%BF%A1%E6%81%AF
requestTime: 1620458377964

2021-05-08 15:19:37,412 INFO o.a.j.u.BeanShellTestElement: =====响应信息:=====>>
2021-05-08 15:19:37,412 INFO o.a.j.t.JMeterThread: Thread is done: 充电云运营商管理 1-1
2021-05-08 15:19:37,413 INFO o.a.j.t.JMeterThread: Thread finished: 充电云运营商管理 1-1
2021-05-08 15:19:37,413 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2021-05-08 15:19:37,413 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

到了这里,关于jmeter-BeanShell预处理器与BeanShell后置处理器的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据采集与预处理01: 项目1 数据采集与预处理准备

    数据采集:足够的数据量是企业大数据战略建设的基础,因此数据采集成为大数据分析的前站。数据采集是大数据价值挖掘中重要的一环,其后的分析挖掘都建立在数据采集的基础上。大数据技术的意义确实不在于掌握规模庞大的数据信息,而在于对这些数据进行智能处理,

    2024年01月25日
    浏览(65)
  • C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)

    先简单了解一下程序环境,然后详细总结翻译环境里的编译和链接,然后在总结编译预处理。 在 ANSI C 的任何一种实现中,存在两个不同的环境 翻译环境:这个环境中源代码被转换为可执行的机器指令。 执行环境:执行二进制代码。 计算机如何执行二进制指令? 我们写的C语

    2024年02月09日
    浏览(57)
  • 数据预处理matlab matlab数据的获取、预处理、统计、可视化、降维

    1.1 从Excel中获取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步确定导入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 对象, 再用 opts.Name=Value 的格式逐个添加。 例3: 将导入信息存到变量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    浏览(56)
  • 图像预处理算法————灰度化处理

    图像预处理算法适合在FPGA上完成,原理简单且需要快速处理,通常有灰度化、中值、均值滤波等,以及颜色空间转换算法。 灰度图像是一种特殊的彩色图像(R=G=B的彩色图像) 只有一种颜色分量,单通道的0-255 方法:一般有分量法、最大值法、平均值法、加权平均法四种方

    2024年01月17日
    浏览(51)
  • 大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

    目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数据源,我们可以采用哪些不同的方法和工具? 数据

    2024年01月25日
    浏览(54)
  • 昇腾CANN DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶

    本文分享自华为云社区《昇腾CANN 7.0 黑科技:DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶颈》,作者: 昇腾CANN 。 随着人工智能的快速发展,越来越多的应用场景需要使用机器学习和深度学习模型。AI网络模型的训练一般分成两个关键部分,一个是训练数据预处理

    2024年02月05日
    浏览(51)
  • 预处理器指令

    预处理器指令 指导编译器在 实际编译之前 对信息进行预处理。 所有预处理指令以#开始。并由于预处理器指令不是语句,所以没有分号作为结尾。 一个预处理器指令,一定是这一行的唯一指令。 预处理器指令 描述 #define 将其后的一系列 成为符号 undef 取消定义的符号 if 测

    2024年02月03日
    浏览(47)
  • 【26 预处理详解】

    预定义符号 #define定义常量 #define定义宏 带有副作用的宏参数 宏替换的规则 宏函数的对比 #和## 命名约定 #undef 命令行定义 条件编译 头文件的包含 其他预处理指令 c语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的 FILE //进行编译的源文件 LI

    2024年01月20日
    浏览(40)
  • 编译预处理:#if

    #if expression … #elif … #end expression 是整数常量比较的表达式,例如: defined表达式,例如 defined AAA, 或者 defined(AAA), 如果AAA是一个宏定义,return true,否则,return false; 单个整数,例如:1/10/100/0, 非零为true,零为false; 整数比较,例如:1 == 1为true, 0 == 0为ture, 1 2为false; 单个

    2023年04月14日
    浏览(71)
  • 【C语言】预处理

    在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。 1.翻译环境 组成一个程序的每个源文件通过编译过程分别转换成目标代码 每个目标文件由链接器(linker)捆绑在

    2024年02月17日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包