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证书得到私钥.根据私钥字节数组获取私钥对象.根据公钥字节 ...
随机推荐
- fastjson 将json字符串转化成List<Map<String, Object>>
亲测可行,如下: JSON.parseObject(jsonstr, new TypeReference<List<Map<String, Object>>>() ...
- pandas 之 索引重塑
import numpy as np import pandas as pd There are a number of basic operations for rearanging tabular ...
- Kombu源码分析(一)概述
Celery是Python中最流行的异步消息队列框架,支持RabbitMQ.Redis.ZoopKeeper等作为Broker,而对这些消息队列的抽象,都是通过Kombu实现的.Kombu实现了对AM ...
- J2SE 容器
知识点:Collection接口.Iterator接口.增强的for循环.Set接口.List接口和Comparable接口.Collection类.Map接口.自动打包/解包.泛型 容器:API文档 ...
- zabbix--源码安装报错总结
源码安装 zabbix 报错总结 1)报错: configure: error: MySQL library not found 解决办法 # find / -name "mysql_con ...
- php一句话木马+中国菜刀拿服务器文件目录
使用工具: 中国菜刀 一句话php木马 <?php @eval($_POST['123456']);?> 第一步,将php木马上传至服务器,为了方便我就直接在服务器上建立. [root@p ...
- Detectron2源码阅读笔记-(二)Registry&build_*方法
Trainer解析 我们继续Detectron2代码阅读笔记-(一)中的内容. 上图画出了detectron2文件夹中的三个子文件夹(tools,config,engine)之间的关系.那么剩下的 ...
- mysql 执行存储过程报错Prepared statement needs to be re-prepared
今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...
- arduino入门笔记
以 ARDUINO® UNO R3为例 一.将板子与电脑连接 初次使用会自动安装驱动. Arduino Uno通过USB连接到计算机或外部电源自动获取电源,因此此时能看到电源指示灯会亮. 我的L13也 ...
- input标签中的accpet
用法 accept 属性只能与 <input type="file"> 配合使用.它规定能够通过文件上传进行提交的文件类型. 提示:请避免使用该属性.应该在服务器端验证 ...