Jmeter BeanShell 从数据库中获取数据并创建一个requesBody
一、前言
在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的。还需要使用自动化让操作更简便。
下面以一个简单的例子阐述一下如何使用beanShell让代码更简便。就不说一些基础的操作了。
二、前提准备
已经创建好了线程、连接数据库、使用数据库中的数据、http请求也是可以成功的。
一个简单的小例子
JDBC查询:

requestBody:
{
sqr:${sqr_1}, //申请人
sqrbm:${sqbm_1}, //申请人部门
sqrdw:${sqdw_1}, //申请人单位
callback:"${callback_1}", //回调地址
qzsqbh:["${qzsqbh_1}"] //申请编号
}
三、优化
1、JDBC中填写Result Variable names (这个是整个查询结果,Variable name 是针对每一列的查询结果)为dbInfo

2、在JDBC Request中添加一个Beanshell PostProcessor
3、在测试计划中添加有关json的jar包,因为在shell脚本中会使用到json

4、先定义一个对象存储得到的数据,是一个list中包含map的对象。定义一个空的json对象 requestBody
var dbInfo = vars.getObject("dbInfo");
JSONObject requestBody = new JSONObject();
5、循环获取每行的数据、并将数据存储在json中
for(var obj : dbInfo) {
int sqr = Integer.parseInt(obj.get("c_sqr"));
int sqrbm = Integer.parseInt(obj.get("c_sqbm"));
int sqrdw = Integer.parseInt(obj.get("c_sqdw"));
String callback = obj.get("c_callback");
requestBody.put("sqr",sqr);
requestBody.put("sqrbm",sqrbm);
requestBody.put("sqrdw",sqrdw);
requestBody.put("callback",callback);
requestBody.put("qzsqbh","XCVBNMDFDEDSSSSFRRFDGDFGFD122EDFD45454");
}
6、将拼接好的json对象转为string,直接传入http request中可以了
vars.put("requestBody",requestBody.toString());
Jmeter BeanShell 从数据库中获取数据并创建一个requesBody的更多相关文章
- Django Form 实时从数据库中获取数据
修改 models.py 添加 class UserType(models.Model): caption = models.CharField(max_length=32) 执行命令,生成数据库 p ...
- Jmeter-从数据库中获取数据并作为变量传输
再今天重新学习,从数据库中取数据,并作为变量传到下一个请求中. 首先第一步要导入mysql驱动包 一.添加JDBC Connection Configuration 设置链接 Database URL ...
- 使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)
最近在使用httprunner进行接口测试,在传参时,用到了三种方法:(1)从csv文件中获取:(2)在config中声名然后进行引用:(3)从函数中获取.在测试过程中,往往有些参数是需要从数据库中获 ...
- jmeter beanshell 从文件中获取随机参数
loadruner 参数化有个功能,可以设置在脚本每次出现参数时,自动更换参数值.在做jmeter自动化测试过程中,同一个请求中出现多个参数值,如一个接口可以添加n个信息的请求 [ { "n ...
- python操作从数据库中获取数据的接口
1.输入一个表名,获取表里面的数据 2.判断用户是否存在,如果不存在就添加到数据库里面
- 用sql的select语句从数据库中获取数据
基本的select语句 select语句中的算数表达式和NULL值 列的别名 使用连接符操作,literal character strings,alternative quote operator, ...
- 动态从数据库中获取数据填充Select
JavaScript代码: $(document).ready(function () { getIntype(); });function getIntype(){ $.ajax({ type:&q ...
- JS数据交互:动态从数据库中获取数据填充Select
JavaScript代码: $(document).ready(function () { getIntype(); });function getIntype(){ $.ajax({ type:&q ...
- jmeter循环读取数据库中的数据
1,添加一个jdbc请求 2,添加一个循环控制器,循环的次数为sql返回的记录数${var_#} 3,添加一个计数器(用来做变量拼接) 4,拼接变量,往目标接口发请求 最后脚本的构造如下:
随机推荐
- java自学入门心得体会 从环境配置开始
java —— 一种可以撰写跨平台应用软件的面向对象的程序设计语言. 很多教程里都要概述java语言的诞生发明.其实像图灵的”图灵机“和”图灵测试“一样,当初的java并不是这样. 是用来操控一些电冰 ...
- booststrap select2的应用总结
本身对前端js了解不是特别多,在项目中,遇到很多前端的问题,有时间整理一下,有不对的地方,不吝赐教,多多批评指正. 在项目中,遇到最多的select下拉框情景,莫过于多选和单选了 单选是很容易理解的, ...
- 机器学习 MLIA学习笔记(一)
监督学习(supervised learning):叫监督学习的原因是因为我们告诉了算法,我们想要预测什么.所谓监督,其实就是我们的意愿是否能直接作用于预测结果.典型代表:分类(classificat ...
- 获取本机ip的shell脚本
ifconfig br0 | grep 'inet addr' | sed 's/^.*addr://g' |sed 's/ Bcast:.*$//g' 注意:br0为网卡名称,需要改成你使用的网卡名 ...
- cookie(2)
转载,原文地址 https://segmentfault.com/a/1190000004743454 一.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那就不得不 ...
- 告诉maven,我真的不需要web.xml
<!-- 告诉maven,我真的不需要web.xml --> <plugin> <groupId>org.apache.maven.plugins</grou ...
- Python -- xlrd,xlwt,xlutils 读写同一个Excel
最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用x ...
- Java中泛型使用
Java中泛型使用 泛型作用: 泛型:集合类添加对象不用强转 反射机制:将泛型固定的类的所有方法和成员全部显示出来 核心代码: ArrayList<Ls> ff=new ArrayList ...
- Mysql批量导入约束报错
SET foreign_key_checks = 0; 禁用外键,在文件顶部加 SOURCE dump_file_name; 进行SQL执行 SET foreign_key_checks ...
- mysql 视图,事务,存储过程,触发器
一 视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表.使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sq ...