jmeter无法自行处理javascript,但是它可以用自带的BSF PreProcessor(BSF:面向java的脚本语言,支持javascript)

(使用这个之前要把bsh-2.0b2.jar包放到jmeter的lib下)
以出售带号寄售信息为例:
页面里有一个totalCommission的变量,它的值是根据price和amount的值来计算的,这里可以在发布带号寄售的取样器请求页面添加一个前置处理器:BSF PreProcessor
如下图:

其中的script脚本为:
vars.put('price',${price});
var priceInput =vars.get('price');
(这里要使用变量的时候都要声明,如这里:vars.put('price',${price});你直接用log.info(vars.get(price))的话会报错,要先声明它:var priceInput =vars.get('price');然后再log.info(priceInput)的话就OK了,也不知道why:世界之大,无奇不有!!)
vars.put('amount',${amount})
var quantity =vars.get('amount');
var commissionRate=vars.get('commissionRate');
var totalCommission=vars.get('totalCommission');(注意这里要定义var totalCommission,如果直接用vars.get('totalCommission')会报错,至于why还不是太清楚)
log.info("before total:"+priceInput);
log.info('commissionRate='+commissionRate);

var additionalCommission=vars.get("additionalCommission");

log.info('additionalCommission='+additionalCommission);

var commissiontext;
commissiontext = priceInput*commissionRate;
commissiontext = commissiontext.toFixed(3);

log.info('commissiontext='+commissiontext);

var temp = parseInt(commissiontext);

log.info('temp='+temp);

if(temp<commissiontext)
{temp+=1;}

commissiontext=parseInt(temp) + parseInt(additionalCommission);
log.info('commissiontext1='+commissiontext);

vars.put("totalCommission",commissiontext);

log.info("after total:"+vars.get('totalCommission'));
------------------------------------------------------------------------------------------------

处理中出现问题的话,可以到jmeter的bin下面查看jmeter.log看看问题出在哪,相应的就可以解决它了
--------------------------------------------------------------------------------------------------
上述问题也可以用BeanShell PreProcessor来解决:
BeanShell是一个小型的,免费的,可嵌入式的,具有面向对象脚本语言特性的Java代码解释器。它是用Java语言写的。它能执行标准的Java 语句和表达式,还自带简单的脚本命令和语法。它把编程对象当成一个简单的方法,这很像Perl和JavaScript. 你可以在写Java测试或调试时使用BeanShell,也可以用它作为你的应用程序的脚本引挚。简而言之,BeanShell可以动态的解释JAVA语 言。也就是说BeanShell在许多方面对于Java的用处就像Tcl/Tk对于C的用处一样:BeanShell是可嵌入式的---你可以在运行时从 你的应用程序调用BeanShell去动态的执行Java代码或是为你的应用程序提供脚本扩展。相反,你也可以从BeanShell调用你的应用程序及其 对象,它可以让JAVA对象和API动态运行。正因为BeanShell是用JAVA写的,所以它可以和你的应用程序运行在同一个JVM空间内,你也可以 自由的传递实时对象的参照(References)到脚本代码中并且作为结果返回。
这里跟BSF一样新建一个前置处理器:BeanShell PreProcessor
代码如下:
var priceInput=${price};
log.info("price="+priceInput);
var quantity=${amount};
log.info("quantity="+quantity);

var commissionRate=vars.get("commissionRate");
float abc=Float.parseFloat(commissionRate);
log.info("commissionRate="+abc);

float commissiontext=priceInput*abc;
log.info("commissiontext="+commissiontext);

int temp=(int)commissiontext+1;
log.info("temp="+temp);

var additionalCommission=vars.get("additionalCommission");
log.info("additionalCommission="+additionalCommission);
commissiontext=temp +Integer.parseInt(additionalCommission);
log.info("="+commissiontext);

vars.put("totalCommission",String.valueOf(commissiontext));
因为BeanShell的变量定义比较宽松,所以很容易在转换的时候出错,这里要很注意。

.BeanShell 脚本处理:如果在测试用例中用到了 BeanShell 脚本,则需要将 BeanShell 包拷贝到 JMeter bin 目录下。BeanShell 是一种兼容 Java 语言的轻量级脚本语言,JMeter 脚本中可能会经常用它来做日志处理,正则表达式后处理(Post- Process)等。如果在测试用例中用到了 Mail Visualiser, Mail Reader 以及 Web Services (SOAP) sampler,则需要将 MAIL 包拷贝到 JMeter bin 目录下。如果在测试用例中用到了 JMS 相关的 sampler,则需要将 JMS 包拷贝到 JMeter bin 目录下。
http://www.ibm.com/developerworks/cn/webservices/1004_sunch_jmeter_soap/index.html

转载于:https://www.cnblogs.com/zhengah/p/4860648.html

jmeter 之 BSF,BeanShell(转载)相关推荐

  1. 性能测试八:jmeter进阶之beanshell

    * BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java ...

  2. Jmeter+ForEach控制器+BeanShell取样器+BeanShell PostProcessor爬取网站信息储存csv

    1.正则提取器+ForEach控制器+BeanShell PostProcessor+BeanShell 取样器,爬取网站信息并写入到csv中 2.访问网站设置 3.正则提取设置,匹配数字-1代表提取 ...

  3. Jmeter接口测试使用beanshell断言json返回

    一般情况下响应断言就能解决很多问题,但是返回复杂的json时就需要用到beanshell断言. 举个例子 免费的接口API www.sojson.com/api/beian/sojson.com ho ...

  4. JMeter脚本的Beanshell和JSR223和Java原生请求的对比

    前言 结合之前一篇介绍JMeter测试Kafka的文章,遇到了JSR223,Beanshell等概念,这篇文章有讲解,转帖出来. 正文 Beanshell vs JSR223 vs Java JMet ...

  5. 【JMeter】使用Beanshell读写Excel文件

    文章目录 场景介绍 思路分析 实现步骤 场景介绍 使用JMeter对导入Excel文件做性能测试,Excel文件模板如下,且银行账号不能重复. 思路分析 为保证每次导入的Excel文件中的银行账号不重 ...

  6. Jmeter系列(Beanshell)---提取list中同一个字段多个值传参给下个接口的list中

    一.测试需求:删除全部文件夹,所有文件的fileId传参给list类型: 二.前置条件:例如先创建10个文件夹,循环控制器次数未10:再进行查询接口调用: 三.文件查询接口测试设计思路:添加计数器和J ...

  7. 通过BeanShell获取UUID并将参数传递给Jmeter

    有些HTTPS请求报文的报文体中包含由客户端生成的UUID,在用Jmeter做接口自动化测试的时候,因为越过了客户端,直接向服务器端发送报文,所以,需要在Jmeter中通过beanshell获取UUI ...

  8. jmeter(四十五)常用Beanshell脚本

    整理了一批jmeter常用的beanshell脚本供大家参考! 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; im ...

  9. jmeter学习指南之Beanshell Sampler 常用方法

    视频地址:http://edu.51cto.com/lecturer/4626073.html JMeter 中可以使用 Beanshell Sampler 编写一些简单的脚本,实现更多功能. 1.B ...

最新文章

  1. PHP面试中常见的字符串与文件操作题目
  2. Quantile Regression,python
  3. 算法---------两数之和
  4. 《蓝桥小记》 2018-04-01
  5. windows server 2008 开机进度条闪过后重启_Windows无法启动:先用PE把桌面重要数据拷出来再说其他...
  6. JAVA之获取JavaSwing复选框JCheckBox选中的值(内容)
  7. 32汇编语言程序说明_Linux 汇编语言学习--编译和链接
  8. 魔兽世界最新网通服务器列表,魔兽世界网通区,魔兽世界网通区在几区
  9. mysql 报错注入输出多个字段_SQL注入浅析
  10. 力扣-面试题 10.05 稀疏数组搜索
  11. 技术人 | 为什么我们的系统会如此复杂?
  12. 自动升级WordPress失败解决方法
  13. 斐讯 k3 设置 虚拟服务器,斐讯K3无线中继设置教程(无线扩展)
  14. Flash闪存储存原理以及NAND flash、NOR flash(详细)对比总结
  15. 微信小游戏appid申请过程
  16. RFC请求注解(Request for Comments)介绍|internet最重要的文献资源
  17. 基于BearPi套件开发的智能儿童手表系统
  18. 论文笔记——DISCO:网络嵌入和深度学习联合解决影响力最大化(IM)问题
  19. 一个不错的免费打电话的程序
  20. Python-爬虫请求~requsts~get

热门文章

  1. 计算机丢失libjcc dll,libjcc.dll 64位
  2. ROS通信机制--键盘控制乌龟运动线速度角速度XYZ值的解释
  3. 关于Mac 下载vscode 过于缓慢的解决办法,亲测有效
  4. python循环怎么结束_python如何结束循环
  5. scratch自制积木
  6. 如何有效预防XSS?这几招管用
  7. 区块链修仙小说走红,刘慈欣的《三体》是其先驱?
  8. 为什么计算机网络使用数字信号,计算机网络数字数据在数字信道传输时为什么要进行..._网络编辑_帮考网...
  9. 博途PLC 中位值滤波算法(FC功能块)
  10. 信息奥赛一本通 三角形最佳路径问题 (1288) 题解