zoukankan      html  css  js  c++  java
  • JMeter BeanShell 应用 .

    场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成

    场景2:测试Java接口,确又不想继承AbstractJavaSamplerClient 来完成,此时可以用BeanShell Sampler来完成

    场景3:线程共享变量,我们希望线程之间共享一个变量,可以利用BeanShell来完成

    其它功能自己类推......

    场景1:生成订单日期与发货日期,然后放入变量

    场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成

    场景2:测试Java接口,确又不想继承AbstractJavaSamplerClient 来完成,此时可以用BeanShell Sampler来完成

    场景3:线程共享变量,我们希望线程之间共享一个变量,可以利用BeanShell来完成

    其它功能自己类推......

    场景1:生成订单日期与发货日期,然后放入变量

    代码方便复制粘贴:

    [java] view plaincopyprint?

    1. import java.text.SimpleDateFormat;

    2. import java.util.Calendar;

    3. import java.util.Date;

    4. Date date = new Date();

    5. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

    6. String nowDate = sf.format(date);

    7. Calendar cal = Calendar.getInstance();

    8. cal.setTime(sf.parse(nowDate));

    9. cal.add(Calendar.DAY_OF_YEAR, +3);

    10. String chanceDate = sf.format(cal.getTime());

    11. cal.add(Calendar.DAY_OF_YEAR, +7);

    12. String planFinishDate = sf.format(cal.getTime());

    13. vars.put("orderDate",chanceDate);

    14. vars.put("delivery",planFinishDate);

    这里的 orderDate delivery 在Vars中,在JMeter中是以Map的形式存放的,我们只需要${变量名}来引用,变量能够保证数据一致性(简单说就是线程互不干扰)。走起,调用试试:

    1.Java请求调用

    2.结果树中察看

    如果这两个时间(orderDate,delivery)在测试过程中只需要生成一次,可以把BeanShell Sampler 放在仅一次控制器下,这样性能更加。

    场景2:

    下面BeanUtil是一个接口程序,已经打包BeanShell.jar,现在测试其中的getUserName与getAddress方法

    直接用BeanShell Sampler到调用接口方法:

    上图中,我们简单的调用了getUserName()与getAddress()方法

    log.error是在控制台输出结果(仅仅调试的时候用,正式测试时去除掉)。

    vars.put()是把取得的结果放到变量,供下一个Sampler调用()。

    当然有个最得要的部分别忘记了,接口包BeanShell.jar要放到%JMETER_HOME%lib目录(建议),当然你也可以在测试计划中加入(不建议)

    如下图:

    如果 BeanShell.jar(你的包名可以任意取名)依赖别的包,那么它所依赖的包也要一道放到%JMETER_HOME%lib目录。

    场景3

    线程共享变量

    JMeter中线程间共享变量可以通过定义属性值来完成,JMeter启动时会读取一些属性文件,比如jmeter.properties、user.properties,这些属性

    值是可以增加的,也可以修改的,通过BeanShell可以对其进行更改。

    以BeanShell Sampler为例,在其中通过props.put()来增加属性,props.get()来获取属性。

    在其它Sampler中,比如Java Sampler中通过 ${__property(【属性名称】,,)}来获取。

    上图中加入一个test属性,下图用 ${__property(test,,)}引用。

    结束!

    转载至:http://mp.weixin.qq.com/s?__biz=MjM5Mjg0MzMzMw==&mid=212500831&idx=2&sn=e63797a433ff18aef548184c3f210432&scene=0#rd

  • 相关阅读:
    htmlcleaner使用及xpath语法初探
    薛兆丰 经济学思维:只给你讲地道的经济学思维 得到订阅专栏 下载
    解决web项目存在多个log4j.properties配置文件,导致日志级别配置不生效问题
    RC4被JDK8默认禁用导致腾讯QQ邮箱无法访问
    JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
    javamail-android
    使用POP3协议接收并解析电子邮件(全)
    [API]使用Blueprint来高雅的编写接口文档 前后端api文档,移动端api文档
    优酷真实视频地址解析——2016年9月20日 优酷视频下载工具
    记录思想分享知识编辑器 Markdown 编辑阅读器
  • 原文地址:https://www.cnblogs.com/Grace7582/p/4934440.html
Copyright © 2011-2022 走看看