jmeter之BSF,BeanShell jmeter的beanshell
(使用这个之前要把bsh-2.0b2.jar包放到jmeter的lib下)
以出售带号寄售信息为例:
页面里有一个totalCommission的变量,它的值是根据price和amount的值来计算的,这里可以在发布带号寄售的取样器请求页面添加一个前置处理器:BSFPreP rocessor
如下图:
其中的script脚本为:
vars.put('price',${price});
var priceInput =vars.get('price');
(这里要使用变量的时候都要声明,如这里:vars.put('price',${price});你直接用log.info(vars.get(price))的话会报错,要先声明它:varpriceInput =vars.get('price');然后再log.info(priceInput)的话就OK了,也不知道why:世界之大,无奇不有!!)
vars.put('amount',${amount})
var quantity =vars.get('amount');
var commissionRate=vars.get('commissionRate');
vartotalCommission=vars.get('totalCommission');(注意这里要定义vartotalCommission,如果直接用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
更多阅读
无主之地2失落的宝藏怎么找 无主之地失落的宝藏
无主之地2失落的宝藏怎么找——简介无主之地2中文版是一款自由度很高的射击类游戏,第一代作品推出后深受好评,获得IGN8.8的高分,给人眼前一亮的感觉,挣脱了原有射击游戏的固有模式,在这里,武器可以升级,音乐效果十分震撼,扎实的第一人称射击
宝宝合成之梦幻西游的亲身体会。 梦幻西游法宝合成位置
宝宝合成之梦幻西游的亲身体会。——简介金生水,水生木,木生火,火生土,土生金。梦幻西游中以前一直苦恼于如何才能合成好的宝宝,后来慢慢的自己查阅了相关资料,加上人力财力的投入,现在也能说很是了解,现在就让我们一起研究一下。宝宝合成
五行缺水之人应注意的问题 五行缺水戴什么
五行缺水之人的心性:皮肤干燥、粗糙,性情孤傲清高,有时静若处子,有时心急气躁。酷爱读书,与神秘的事物有不解之缘。大多心地善良,有悲悯之心,毅力较一般人强。表情严肃,待人有礼有节。五行缺火之人宜从事的职业:航海、旅游、交通运输、水产
京城第一名媛:王菲好友赵欣瑜自称是叶剑英元帅之子叶选廉的妻子生
赵欣瑜微博晒全家福,丈夫叶剑英之子叶选廉。 12月5日讯(记者韩太召)综合香港星岛日报、信报报道,有“京城第一名媛”之称的赵欣瑜,昨日首度公开宣称自己是叶剑英元帅之子叶选廉的妻子,并且发布多张合影。
WOW 炮舰之子鞍座的获取方法 魔兽世界炮舰之子鞍座
WOW 炮舰之子鞍座的获取方法——简介 在魔兽世界游戏中,炮舰之子鞍座是许多玩家追求的一种坐骑,不但坐骑的样子很好看,而且非常霸气,下面来简单了解下炮舰之子鞍座的获取方法。WOW 炮舰之子鞍座的获取方法——工具/原料电脑(已安装魔兽