【Jmeter】jmeter提取response中的返回值,并保存到本地文件--BeanShell后置处理器
有个需求,需要在压测环境中,创建几十万的账号数据,然后再根据创建结果,查询到某些账号信息。
按照之前我的做法,直接Python调用API,然后再数据库查询;
但是近期所有开发人员的数据库访问权限被限制,我也不能例外。没法访问数据库,但是有没有查询的API,不好弄。
后来我想到了一个解决办法,试验了一下,可行。简要记录如下:
拿到创建数据的 post API,用Jmeter实现以下,然后提取返回值,并保存到本地文件。
顺便说一下,其实这个用Python实现也没问题,选择哪个,其实都行。
我之前用Python弄得多一些,这里把用Jmeter实现,也给做一下简要的简要记录。如下:
步骤如下:
一.新建TestPlan

二.增加如下组件:
1.TestPlan

2.增加setUp Thread Group

3.增加 HTTP HTTP信息头管理器

配置:Content-Type:application/json
4.增加HTTP Request

POST http://haochuangtest.com/api/rest/internal/v1/en/XXXenterprise/${具体参数}/cloudXXXXX
POST data:
{
"id": "",
"XXXXXNumber": "",
"displayName": "HAO-TEST",
"password": "",
"XXXXXPassword": "",
"autoXXX": 2,
"XXXModel": false,
"smartXXXX": 6,
"expireTime": -1,
"adminUserId": 0,
"adminDisplayName": "null",
"permanent": "true",
"XXXXXNumberType": 4,
"XXXXXId": "null",
"userXXXXXXXDisplayName": "null",
"configs": {
"conXXXX": "2"
}
}
5.增加 Regular Expression Extractor

<hashTree>
<RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
<stringProp name="RegexExtractor.useHeaders">false</stringProp>
<stringProp name="RegexExtractor.refname">meetingNumber</stringProp>
<stringProp name="RegexExtractor.regex">"meetingNumber":"(.+?)",</stringProp>
<stringProp name="RegexExtractor.template">$$</stringProp>
<stringProp name="RegexExtractor.default"></stringProp>
<stringProp name="RegexExtractor.match_number"></stringProp>
</RegexExtractor>
<hashTree/>
6.增加 BeanShell PostProcessor

FileWriter fstream = new FileWriter("D:\\WORK_2020\\20200224_HAOCloud\\meetingId.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("meetingNumber")+ "\n");
out.close();
fstream.close();
7.增加 View Result Tree 察看结果树

3.调试配置并运行;
运行过程,查看结果数的返回结果就行,此处不做截图;
4.检查结果:
可见文件已经成功生成 :

注意点:
1.对于返回结果的正则部分要注意,差一个双引号或者.都可能出错,导致获取的结果为null;
2.对于两个引用的组件要注意,不要选错;
3.其中主要的就是这个 BeanShell后置处理器 ,要注意使用;
部分参考:https://www.cnblogs.com/yrxns/p/10912816.html ,但是该文章有点问题错误,看的时候要注意辨别;
当做性能压测时,可能会需要把响应数据的一些字段统计出来。这里简单介绍一下。
1、首先把接口调通,确定需要统计的字段,这里以统计ccmpSeq字段来做例子。

2、添加正则表达式提取器,用来提取响应结果中的ccmpSeq

正则表达式用""包起来,如HTTP请求完成后的响应数据
{
"ccmpSeq":"CBS_queryBalance20171023131825491588",
"respTime":"20180820105000",
"respCode":"0",
"respDesc":"操作成功",
"data":{
"totalAmount":19999991000,
"accountID":"acct1470001090166"
}
}
我们只需要统计ccmpSeq,所以正则表达式为 "ccmpSeq":"(.+?)"
() 表示括起来的部分就是要提取的。
4、添加线程数为10,运行后,打开123.csv,查看结果。

【Jmeter】jmeter提取response中的返回值,并保存到本地文件--BeanShell后置处理器的更多相关文章
- 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径
原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...
- Jmeter 正则表达式提取Response Headers,Response Body里的值
实践过程中遇到需要提取Response Headers,Response Body里的值 一.获取Response Body的值,这里采用json提取器形式 1.Response Body返回值,如下 ...
- 性能测试,如何得到大量token,并保存在本地文件中
需求:性能测试需要大量的token,模拟登陆 设计思路: 1.使用语言:python +request+正则匹配+写入本地 2.jmeter+函数助手+正则或者json/yaml+后置处理器beans ...
- jmeter提取正则表达式中所有关联值-----我想获取所有的ID
[{ "ID": 1, "Name": "张三" }, { "ID": 2, "Name": &qu ...
- Jmeter正则提取list中相同key的value和出现的次数
list中如何计算某个key出现的次数以及通过正则关联参数化呢? 首先要通过正则提取出现key的value 举例:
- jmeter将上一个接口的返回值作为下一个接口的请求参数
接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...
- JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例
上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应 ...
- JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取
前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...
- jmeter数据关联_后置处理器_正则表达式提取器
随机推荐
- ubuntu 14.04 安装wordpress
转者注:若没有Apache + PHP + MySQL环境,请参考我的这篇博客 (1)首先下载wordpress, sudo wget http://wordpress.org/latest.tar. ...
- 变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment
class Battery(): """一次模拟电瓶汽车的简单尝试""" def __init__(self,battery_size = ...
- selenium高级应用 - 结束Windows中浏览器的进程
结束Windows中浏览器的进程 #-*- coding:utf-8 #结束Windows中浏览器的进程 from selenium import webdriver import unittest ...
- AI产品经理工作流程——需求分析和产品设计
1.AI产品设计常见失败原因 技术驱动产品设计,即我有什么技术就做什么产品.尽管许多公司不惜重金招聘高级AI算法工程师,确实这样也能帮助企业拿到大量的融资,但也容易给公司带来技术决定产品设计的局限.然 ...
- Go语言实现:【剑指offer】二叉树的下一个结点
该题目来源于牛客网<剑指offer>专题. 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回. 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. Go语 ...
- 《自拍教程16》cmd的常用技巧
cmd.exe是Windows 自带的命令行操作交互界面软件. 虽然功能有限,但是毕竟是默认的命令行操作交互界面软件. 肯定所有的电脑都是自带的. 当然现在已经有很多改良版的,交互体验更好的cmd类似 ...
- XLNet:运行机制及和Bert的异同比较
这两天,XLNet貌似也引起了NLP圈的极大关注,从实验数据看,在某些场景下,确实XLNet相对Bert有很大幅度的提升.就像我们之前说的,感觉Bert打开两阶段模式的魔法盒开关后,在这条路上,会有越 ...
- apache 访问日志access_log 配置和解析 rotatelogs分割日志
一.解析访问日志 apache 的访问日志记载着大量的信息,学会高效快捷的读出其中关键信息对我们的工作有极大帮助. 如果Apache的安装方式是默认安装,服务器一运行就会有两 ...
- 杭电-------2043密码(C语言写)
#include<stdio.h> #include<string.h> ]; ] = { '~','!','@','#','$','%','^' }; ] = { }; in ...
- 【全集】IDEA入门到实战
课程介绍 IDEA是一款功能强悍.非常好用的Java开发工具,近几年编程开发人员对IDEA情有独钟.虽然IDEA功能很强大,但目前市面讲解的不细致.不系统,导致很多IDEA初学者要么无从下手,要么 ...