有个需求,需要在压测环境中,创建几十万的账号数据,然后再根据创建结果,查询到某些账号信息。

按照之前我的做法,直接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">&quot;meetingNumber&quot;:&quot;(.+?)&quot;,</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":"(.+?)"

() 表示括起来的部分就是要提取的。

. 表示匹配任何字符串。
+ 表示一次或多次。
?表示不要太贪婪,在找到第一个匹配项后停止。
(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$,$3$等等,表示解析到的第几个值给seq。如:$1$表示解析到的第1个值,我们这里只有一个正则表达式,所以是$1$
(4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填1
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,通常情况下为空
 
3、在本地新建一个123.csv文件,然后添加一个BeanShell PreProcessor,用于提取结果并将之保存到123.csv文件。

4、添加线程数为10,运行后,打开123.csv,查看结果。 

【Jmeter】jmeter提取response中的返回值,并保存到本地文件--BeanShell后置处理器的更多相关文章

  1. 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径

    原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...

  2. Jmeter 正则表达式提取Response Headers,Response Body里的值

    实践过程中遇到需要提取Response Headers,Response Body里的值 一.获取Response Body的值,这里采用json提取器形式 1.Response Body返回值,如下 ...

  3. 性能测试,如何得到大量token,并保存在本地文件中

    需求:性能测试需要大量的token,模拟登陆 设计思路: 1.使用语言:python +request+正则匹配+写入本地 2.jmeter+函数助手+正则或者json/yaml+后置处理器beans ...

  4. jmeter提取正则表达式中所有关联值-----我想获取所有的ID

    [{ "ID": 1, "Name": "张三" }, { "ID": 2, "Name": &qu ...

  5. Jmeter正则提取list中相同key的value和出现的次数

    list中如何计算某个key出现的次数以及通过正则关联参数化呢? 首先要通过正则提取出现key的value 举例:

  6. jmeter将上一个接口的返回值作为下一个接口的请求参数

    接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...

  7. JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例

    上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应 ...

  8. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

    前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...

  9. jmeter数据关联_后置处理器_正则表达式提取器

随机推荐

  1. Codeforces_338_D

    http://codeforces.com/problemset/problem/338/D 中国剩余定理的应用,思路是确定可能符合的最小行和最小列,然后判断是否符合.若不符合则后面的(最小的倍数)也 ...

  2. To be contine ,NW NMM backup sqlserver failed.

    Last time, we talk about separate under one cluster backup into two diffetent AG backup. Does it wor ...

  3. sublime 快捷键 【转】

    Sublime Text 3 快捷键精华版   备用,方便查询 Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+S ...

  4. Go语言实现:【剑指offer】正则表达式匹配

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来匹配包括 . 和 * 的正则表达式.模式中的字符.表示任意一个字符,而 * 表示它前面的字符可以出现任意次(包含0次). 在本 ...

  5. XXE漏洞复现步骤

    XXE漏洞复现步骤 0X00XXE注入定义 XXE注入,即XML External Entity,XML外部实体注入.通过 XML 实体,”SYSTEM”关键词导致 XML 解析器可以从本地文件或者远 ...

  6. python学习(8)实例:写一个简单商城购物车的代码

    要求: 1.写一段商城程购物车序的代码2.用列表把商城的商品清单存储下来,存到列表 shopping_mail3.购物车的列表为shopping_cart4.用户首先输入工资金额,判断输入为数字5.用 ...

  7. Algorithms - Insertion Sort - 插入排序

    Insertion Sort - 插入排序 插入排序算法的 '时间复杂度' 是输入规模的二次函数, 深度抽象后表示为, n 的二次方. import time, random F = 0 alist ...

  8. golang的timer一些坑

    本文代码部分基于dive-to-gosync-workshop的代码 Golang 的NewTimer方法调用后,生成的timer会放入最小堆,一个后台goroutine会扫描这个堆,将到时的time ...

  9. 一文彻底搞懂 TCP三次握手、四次挥手过程及原理

    原创文章出自公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪 ...

  10. 算法将一个对象中的某一个key值变为true,其他值都为false

    主要运用在,v-if v-show切换不同内容时,非常快的打开某一个区域,关闭其他的区域哈. 这样就不需要每一个设置false,打开区域设置为true. 可以优化代码哈 for in 主要循环对象(空 ...