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 从文件中获取随机参数的更多相关文章

  1. Jmeter BeanShell 从数据库中获取数据并创建一个requesBody

    一.前言 在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的.还需要使用自动化让操作更简便. 下面以一个简单的例子阐述一下如何使用beanShell让代码更简 ...

  2. struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式

    本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...

  3. JAVA文件中获取路径及WEB应用程序获取路径方法

    JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...

  4. 从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

     从BIRT报表文件中获取页面设置信息(页边距.纸张大小.输出方向)的方法    报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同 ...

  5. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  6. 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置

    我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...

  7. 【2017-06-27】Js中获取地址栏参数、Js中字符串截取

    一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  8. js文件中获取${pageContext.request.contextPath}

    一般从 JSP文件中,可以直接使用 ${pageContext.request.contextPath}非常方便的获得当前页面的路径,用来处理被 Apache2代理之后出现 URL变化的问题,比如增加 ...

  9. 从PFX文件中获取私钥、公钥证书、公钥

    https://blog.csdn.net/ZuoYanYouYan/article/details/77868584 该类具体功能:根据pfx证书得到私钥.根据私钥字节数组获取私钥对象.根据公钥字节 ...

随机推荐

  1. Jmeter 使用badyboy 录制脚本

    在使用jemeter 做测试时,一般需要先录制脚本,这个过程可以通过手工添加采样器进行采样. 比较方便的方法是使用badboy 来录制脚本录制完脚本后使用jemeter 再做压力测试,大大加快测试进度 ...

  2. iView学习笔记(二):Table行编辑操作

    1.前端准备工作 首先新建一个项目,然后引入iView插件,配置好router npm安装iView npm install iview --save cnpm install iview --sav ...

  3. JMeter的执行顺序

    JMeter执行顺序如下:1.配置元件2.前置处理器3.定时器4.采样器5.后置处理器(除非服务器响应为空)6.断言(除非服务器响应为空)7.监听器(除非服务器响应为空) 只有当作用域内存在采样器时, ...

  4. mysql-mysqldump

    备份(导出)所有数据库的数据和结构(注意:这种方式备份,还原时,无需先创建数据库,可直接导入) mysqldump -u root -p 'password' --all-databases > ...

  5. python 比较2个文件内容

    1. 通过使用md5字符串比较2个文件 import hashlib def get_file_md5(filename): '''可以比较两个文件的md5值,来比较文件内容.未使用''' md5 = ...

  6. 在Maven项目中,jsp不解析el表达式

    我的这个项目是用Maven-archetype-webapp项目创建的,如下图所示: 有这种方式创建有一个坑,就是它使用的servlet版本是2.3,而servlet2.4以下的版本是不会自动解析el ...

  7. LeetCode 886. Possible Bipartition

    原题链接在这里:https://leetcode.com/problems/possible-bipartition/ 题目: Given a set of N people (numbered 1, ...

  8. 使用docker部署微服务

    https://my.oschina.net/silenceyawen/blog/1819472 http://jvm123.com/2019/08/docker-shi-yong.html 从201 ...

  9. html5有哪些新特性?如何处理html5新标签的浏览器兼容问题?如何区分html和html5?

    h5新特性: 语义化标签:<hrader></header> .<footer></footer>.<nav></nav>.&l ...

  10. CCF 201909-5 城市规划

    试题编号: 201909-5 试题名称: 城市规划 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 几乎是Gym102222G的原版,详解见上一篇博文 /* 贡献+树形dp+01背包 * ...