Jmeter---后置处理器 BeanShell PostProcessor 获取JDBC结果(多行)并以列表传入另一个请求
之前用python+locust对脚本生成商品编码, 商品上架,购买商品进行编写脚本和压测;
开始是打算用Jmeter,后来遇到问题在 Jmeter如何读取JDBC多行并组成列表,作为下一个请求 一直卡在这里,今天终于突破 记录一下:
多方百度没有结果,最终经过过以为朋友指导,可以达成python脚本的效果;
总结:
虽然locust 没有向jmeter, LR等压测工具图表丰富,监听服务器情况等需要借助其他工作完成,在脚本灵活度上大大增加工作的效率;
第一步:
添加JDBC请求:详细参考另外一个博文
1.1添加mysql 链接驱动 \mysql-connector-java-5.1.47.jar

在线程组 增加 JDBC Connection Configuration:

在线程组 增加 JDBC Request:

添加debug Sample和查看结果树,运行脚本,查debug sample运行情况,如下:
在对于JDBC请求结果,发现同一个版本 也会出现不一样的情况,朋友结果是有些是有这个返回值gId_matchNr,而我的是没有

重点:
第二步:
思路是:通过BeanShell PostProcessor拿到JDBC查询结果,组合成一个列表,作为参数传入下一个请求;
vars.put() 接收是字符串,不接受其他类型
列表因此需要用:varObject()
引用参数直接通过${goodId}
5行:获取JDBC查询结果的“gId_#”的结果 即JDBC查询结果的总数,用于便利结果集
6行:转换成int类型
7行:通过log,可以在debug模式查过结果;
8行:创建一个列表,用于查询结果存储;
10行:遍历JDBC结果
11行:因为JDBC查询结果是:gId_1 代表第一个值,gId_2 代表第二个值,如此类推
12行:通过vars.get() 拿到每个值,“\"” 对冒号进行转义
14行:把拿到的每个商品号的值加入到列表里
16行:通过vars.putObject(“goodId”, glist) 赋予到新的变量

通过debug sample 查看到列表方式打印

最后的最后:
在上面脚本最后添加“log.info(glist)” 这行代码 出现下面报错信息,不知道怎么处理 有哪位朋友有解决方法吗?知道的大神 烦请留个言,谢谢
-- ::, ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: `` String tmp_id = vars.get("gId_#"); int num = Integer.parseInt(tmp_id); log.inf . . . '' : Error in method invocation: Method info( java.util.ArrayList ) not found in class'org.apache.logging.slf4j.Log4jLogger'
-- ::, WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: `` String tmp_id = vars.get("gId_#"); int num = Integer.parseInt(tmp_id); log.inf . . . '' : Error in method invocation: Method info( java.util.ArrayList ) not found in class'org.apache.logging.slf4j.Log4jLogger'
Jmeter---后置处理器 BeanShell PostProcessor 获取JDBC结果(多行)并以列表传入另一个请求的更多相关文章
- Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)
1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...
- 二、Jmeter 后置处理器(BeanShell PostProcessor)
1.新建JDBC Request,如下图所示: 重要的参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable N ...
- 通过JMETER后置处理器JSON Path Extractor插件来获取响应结果
学生金币充值接口:该接口有权限验证,需要admin用户才可以做操作,需要添加cookie.cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign. 通常做法是在HT ...
- JMeter—后置处理器(十)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第五节后置处理器后置处理器是用来处理采样器发送的请求后得到的响应数据 一.Debug PostProcessor ...
- jmeter后置处理器 JSON Extractor取多个变量值
1.需要获取响应数据的请求右键添加-后置处理器-JSON Extractor 2.如果要获取json响应数据多个值时,设置的Variable names (后续引用变量值的变量名设置)与JSON Pa ...
- Jmeter 后置处理器--jp@gc - JSON/YAML Path Extractor & JSON Extractor
后置处理器--jp@gc - JSON/YAML Path Extractor 1.需要下载插件,地址: 解压后把对应jar包放置对应的lib和lib/ext目录下,重启Jmeter: 2.在需要提取 ...
- Jmeter(十七) - 从入门到精通 - JMeter后置处理器 -上篇(详解教程)
1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...
- Jmeter 后置处理器
1.JSON Extractor Json extractor 后置处理器用在返回格式为 Json 的 HTTP 请求中,用来获取返回的 Json 中的某个值.并保存成变量供后面的请求进行调用或断言等 ...
- Jmeter后置处理器,正则表达式提取器的使用
[使用场景]:下一个请求参数需要从上一个请求的响应数据中获取 [jmeter正则表达式说明]:使用perl正则表达式(可参考:http://www.runoob.com/perl/perl-regul ...
随机推荐
- VMware 问题
桥接模式下,小鸡上不了网问题 多网卡导致的问题 解决:编辑-虚拟网络编辑器 选择vmnet0,然后点击右下角更改设置 把自动改为指定要桥接的网卡,然后点击确定,测试看看.
- Hive的架构(二)
02 Hive的架构 1.Hive的架构图 2.Hive的服务(角色) 1.用户访问接口 CLI(Command Line Interface):用户可以使用Hive自带的命令行接口执行Hive ...
- Codeforces Round #593 (Div. 2) C. Labs A. Stones
题目:https://codeforces.com/contest/1236/problem/A 思路:两种操作收益都是3 且都会消耗b 操作2对b消耗较小 则可优先选择操作2 再进行操作1 即可得到 ...
- Python之网络编程之concurrent.futures模块
需要注意一下不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池.其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去自己加 ...
- C++ fstream 用法
#include <fstream> #include <iostream> main() { int a,b,c,d; std::ifstream infile (" ...
- 谁掳走了 nginx.pid 文件?
1.重载配置 执行 nginx -s reload 命令,报错:找不到 nginx.pid 文件,无法打开.曾经屡试不爽的命令,此时,竟然失灵了? 刚开始,我一头雾水,有点丈二和尚摸不着头脑… ...
- #417 Div2 Problem C Sagheer and Nubian Market (二分 && std::accumulate)
题目链接 : http://codeforces.com/problemset/problem/812/C 题意 : 给你 n 件物品和你拥有的钱 S, 接下来给出这 n 件物品的价格, 这些物品的价 ...
- 运行roslaunch启动节点报错找不到节点
报错信息: ERROR: cannot launch node of type [${package_name}/${package_name}_node]: can't locate node [$ ...
- gdal test
https://blog.csdn.net/hb_programmer/article/details/81807699 gdal/ogr是一个光栅和矢量地理空间数据格式的翻译库,由开源地理空间基金会 ...
- uiautomatorviewer报错 Error taking device screenshot: EOF
报以下错误 估计是端口冲突 解决方法: 1. netstat -ano | findstr 5037 查看占用5037端口的进程 2. taskkill /pid 10508 /f 杀掉此进程 3 ...