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,拼接变量,往目标接口发请求 最后脚本的构造如下:
随机推荐
- [Redis] - redis实战
Microsoft Windows [版本 10.0.17134.472] (c) Microsoft Corporation.保留所有权利. C:\Users\SeeClanUkyo>f: F ...
- 关于使用jquery的Ajax结合java的Servlet后台判定用户名是否存在
关于把AJAX加入到注册登录demo中去 2018年3月10日 19:21:23 第一次来SUBWAY真切地打代码. 这次的西红柿汤还是挺好喝的. index.jsp: <%@ page con ...
- HDU 6103 Kirinriki(尺取法)
http://acm.hdu.edu.cn/showproblem.php?pid=6103 题意: 给出一个字符串,在其中找两串互不重叠的子串,计算它们之间的dis值,要求dis值小于等于m,求能选 ...
- setSupportActionBar()方法报错
在Android开发中,使用ToolBar控件替代ActionBar控件,需要在java代码中使用setSupportActionBar()方法,如下: Toolbar toolbar = (Tool ...
- Qt_2D_画图教程
1. ZC: 看点:相同的API,QPainter.QPainterDevice和QPainterEngine这3个类 Qt学习之2D绘图(画刷和画笔) http://blog.csdn.net/lp ...
- threejs和3d各种效果的学习
写给即将开始threejs学习的自己,各种尝试,各种记忆.不要怕,灰色的年华终会过去. 一个技术学习的快慢,以及你的深刻程度,还有你的以后遇到这个东西的时候的反应速度,很大程度上,取决于你的博客的深刻 ...
- English trip -- VC(情景课)9 D Reading 阅读练习
Read 阅读 Dear Susie(苏西) It's after dinner, My family is working in the kitchen. My daughter Li is wa ...
- php--------使用 isset()判断字符串长度速度比strlen()更快
isset()速度为什么比strlen()更快呢? strlen()函数函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度.但 ...
- pandas的concat函数和append方法
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, nam ...
- ubuntu系统连接windows系统
1,首先我们要在ubuntu系统是输入:sudo apt-get install rdesktop 2, 用法: rdesktop[options] server[:port] .其实我们就可 ...