jmeter beanshell 从文件中获取随机参数
loadruner 参数化有个功能,可以设置在脚本每次出现参数时,自动更换参数值。在做jmeter自动化测试过程中,同一个请求中出现多个参数值,如一个接口可以添加n个信息的请求
[
{
"name": "baidu",
"url": "http://www.baidu.com",
"page": 88,
"isNonProfit": true
},
{
"name": "google",
"url": "http://www.google.com",
"page": 88,
"isNonProfit": true
},
{
"name": "163",
"url": "http://www.163.com",
"page": 88,
"isNonProfit": true
}
]
把name,url ,page ,isNonProfit 参数化,但是这参数实际发送请求的时候都会重复,即如果name 参数选择的是baidu,其他集体记录也是baidu。所以jmeter 原来的配置参数功能无法满足这个需求,只有修改使用beanshell 先从文本中随机读取n条参数(这里的n是3).beanshell脚本为:
// 读文本文件
public static String lineContent(int lineNumber) throws IOException {
File file = new File("D:/jscript/bid.txt");//文件路径
FileReader fileReader = new FileReader(file);
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader reader = new BufferedReader(isr);
String txt = "";
int lines = 0;
String content = "";
while (txt != null) {
lines++;
txt = reader.readLine();
if (lines == lineNumber) {
content = txt;
}
}
reader.close();
fileReader.close();
return content;
}
// 获取随机数
public static int getRand(int max, int min) {
Random random = new Random();
return random.nextInt(max) % (max - min + 1) + min;
} public static ArrayList getParameters() throws IOException{
ArrayList list=new ArrayList();
while (list.size() != 3) {
int lineNumber = getRand(2330, 2); // 参数文件最大行数为2330
String lineContent = lineContent(lineNumber);
if (!list.contains(lineContent)) {
list.add(lineContent);
}
}
return list;
}
//开始执行的地方
ArrayList list = getParameters();
for(int i=0;i<list.size();i++){
String line = list.get(i);
String[] item = line.split("\\t");
System.out.println(item[2]);
vars.put("name"+String.valueOf(i),item[0]);
vars.put("url"+String.valueOf(i),item[1]);
vars.put("page"+String.valueOf(i),item[2]);
vars.put("isNonProfit"+String.valueOf(i),item[3]); }
这样就可以在脚本请求中设置参数为:
[
{
"name": "${name0}",
"url": "${url0}",
"page": ${page0},
"isNonProfit": ${isNonProfit0}
},
{
"name": "${name1}",
"url": "${url1}",
"page": ${page1},
"isNonProfit": ${isNonProfit1}
},
{
"name": "${name2}",
"url": "${url2}",
"page": ${page2},
"isNonProfit": ${isNonProfit2}
}
]
这样,每条记录都不一样了。满足了测试的需要。
欢迎关注公众号:

jmeter beanshell 从文件中获取随机参数的更多相关文章
- Jmeter BeanShell 从数据库中获取数据并创建一个requesBody
一.前言 在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的.还需要使用自动化让操作更简便. 下面以一个简单的例子阐述一下如何使用beanShell让代码更简 ...
- struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式
本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...
- JAVA文件中获取路径及WEB应用程序获取路径方法
JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...
- 从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法
从BIRT报表文件中获取页面设置信息(页边距.纸张大小.输出方向)的方法 报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同 ...
- 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务
一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...
- 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置
我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...
- 【2017-06-27】Js中获取地址栏参数、Js中字符串截取
一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...
- js文件中获取${pageContext.request.contextPath}
一般从 JSP文件中,可以直接使用 ${pageContext.request.contextPath}非常方便的获得当前页面的路径,用来处理被 Apache2代理之后出现 URL变化的问题,比如增加 ...
- 从PFX文件中获取私钥、公钥证书、公钥
https://blog.csdn.net/ZuoYanYouYan/article/details/77868584 该类具体功能:根据pfx证书得到私钥.根据私钥字节数组获取私钥对象.根据公钥字节 ...
随机推荐
- Prometheus学习笔记(2)Prometheus部署
目录 Prometheus的安装配置启动 Prometheus的安装配置启动 1.Prometheus二进制安装 Prometheus下载链接:https://prometheus.io/downlo ...
- 修改pyechart生成的HTML内容大小方法
1.目前安装pyechart后生成的图片默认大小为 width=800, height=400, 如图 2.想修改内容大小:找到C:\python\Lib\site-packages\pyechart ...
- Linux运维技术之讲解RAID
RAID: 独立冗余磁盘阵列 ,将多块磁盘组合起来,组合成一个阵列,当成一个逻辑设备来使用的机制! RAID级别:仅代表磁盘组织不同,没有上下之分,组合raid时,不仅要考虑速度,还要考虑可用性. 磁 ...
- Qt编译报错:The kit Desktop Qt...has configuration issues which might be the root cause for this problem.
报错:Cannot find file: E:\实验室\20180409_Qt跑马灯\QtTest\QtTest.pro. 17:03:11: 进程"D:\Qt\Qt5.8.0\5.8\ms ...
- 使用NB Exploit Kit攻击的APT样本分析——直接看流程图,就是网页挂马,利用java和flash等漏洞来在你主机安装和运行恶意软件
使用NB Exploit Kit攻击的APT样本分析 from:https://cloud.tencent.com/developer/article/1092136 1.起因 近期,安恒工程师在某网 ...
- 硬币游戏2&&Cutting Game——Grundy值
Grundy值 当前状态的Grundy值就是除任意一步所能转移到的状态的Grundy值以外的最小非负整数, 以硬币问题一为例,可写成: int init_grundy() { sg[] = ; ;i ...
- 关于“Error: listen EADDRINUSE: address already in use 127.0.0.1:3000”
运行vue项目的时候报 Error: listen EADDRINUSE: address already 这个错,表示3000端口号被占用. 解决方法: 1.打开cmd,执行 netstat -n ...
- LeetCode 505. The Maze II
原题链接在这里:https://leetcode.com/problems/the-maze-ii/ 题目: There is a ball in a maze with empty spaces a ...
- Wbbpack --3配置
Wbbpack --3配置 什么是webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包(modulebundler)当 webpack 处理应用程序时,它会递归地构 ...
- Mac Sublime Text使用python3运行脚本(command+b)
默认安装好sublime, 使用快捷键command+b的时候, 会使用python2版本运行 下面就改为用python3运行, 也可以python2运行 一. 新建文件 Sublime Text - ...