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,拼接变量,往目标接口发请求 最后脚本的构造如下:
随机推荐
- ElasticSearch 5.4 自定义插件
ElasticSearch 做为数据仓库处理速度确实很强,但是很多和业务相关的函数ElasticSearch怎么支持的,通过查询发现,ElasticSearch支持自定义插件(相当于自定义函数),通过 ...
- POJ 2728 Desert King(最优比率生成树 01分数规划)
http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...
- HDU 2955 Robberies(0-1背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:一个抢劫犯要去抢劫银行,给出了几家银行的资金和被抓概率,要求在被抓概率不大于给出的被抓概率的情况下, ...
- H5本地存储二
众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同 下面直接上代码,storage中的存储与删除: <!DOCTYPE ...
- chrome的url列表里面也找不到chrome://plugins的原因
plugins 页面被移除后,可以访问: chrome://settings/content 调整 Flash.PDF 的设置. 原本 plugins 页面就基本只剩下这两货了,移除掉确实没啥影响. ...
- Jedis 之 初始<一>
package xx.jedis; import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis ...
- angular5 ng-content使用方法
先自定义一个组件import { Component } from '@angular/core'; @Component({ selector: 'exe-greet', template: ` & ...
- eclipse 里,打开的文件的各个标签,标题乱码。
Eclipse Mars 版本有这个问题. 提交到社区了,也还是没有人回答.Eclipse看来是没落了. https://www.eclipse.org/forums/index.php/t/1072 ...
- ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)
使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据.但是FragmentPagerAdapter并没有给我们提供类似getCur ...
- python-day8-赋值
# x=10 #链式赋值# a=b=c=d=e=f=10# print(a,b,c,d,e,f) #增量赋值 # x=10# y='a'# temp=x# x=y# y=temp# print(x,y ...