1.Bean Shell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

  • log用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”);

  • ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext

  • vars - (JMeterVariables):操作jmeter变量,提供读取/写入访问变量的方法。这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

    a) vars.get(String key):从jmeter中获得变量值

    b) vars.put(String key,String value):数据存到jmeter变量中

c) vars.putObject("OBJ1",new Object());

    更多方法可参考:org.apache.jmeter.threads.JMeterVariables

  • props - (JMeterProperties - class Java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

    a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义

    b) props.put("PROP1","1234"); 

  • prev - (SampleResult):获取前面的sample采样的结果,常用方法:

    a) getResponseDataAsString():获取响应信息

    b) getResponseCode() :获取响应code

    更多方法可参考:org.apache.jmeter.samplers.SampleResult

  • sampler - (Sampler):gives access to the current sampler 访问当前采样

2.BeanShell 断言使用实例

  BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。

这里除了可以使用beanshell的内置变量外,主要通过Failure和FailureMessage来设置断言结果。
  

Failure = false;-----表示断言成功,

FailureMessage = "……"; ----自定义的成功信息

Failure = true;-----表示断言失败,

FailureMessage = "……";-----自定义的失败信息。

  实例:

String responseData = prev.getResponseDataAsString(); //获取请求的返回结果
String code = prev.getResponseCode(); //获取请求的返回code码
String requestData = prev.getSamplerData(); //获取发出的请求数据
if( !code.equals("200") ){ //如果请求的相应状态码不是200
FailureMessage = "响应状态码不是:200,而是:" + code + ",请求失败!"; //自定义的失败信息
log.info(FailureMessage); //在日志里打印失败的信息
log.info("Request: " + requestData); //在日志里面打印失败的请求体
Failure = true; //表示断言失败
}
else if(!responseData.contains("\"errCode\":0")){ FailureMessage = "响应body中errCode不是:0,响应body为:" + responseData;
log.info(FailureMessage);
log.info("Request: " + requestData);
Failure = true;
}

最新文章

  1. HTML标签marquee实现滚动效果
  2. CSS解决高度自适应问题
  3. caffe net 可视化工具
  4. Python进程、线程
  5. hdu5909-Tree Cutting(树形dp)
  6. 用JavaScript获取一个超链接的绝对URL地址
  7. delete语句与reference约束 FK_subplan_job_id冲突问题,导致job无法删除解决办法
  8. iOS 之 UIStackView
  9. 微软MSBI商业智能视频
  10. Vue.js数据响应基础原理
  11. Tomcat基本配置
  12. 微服务日志之.NET Core使用NLog通过Kafka实现日志收集
  13. 更换apt-get官方源为163源
  14. UML类关系(依赖,关联,聚合,组合,泛化,实现)
  15. 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
  16. Nginx 自动补全url地址补全最后的斜线
  17. thymeleaf 拼接字符串与变量
  18. ThinkTemplate模板引擎的设计和使用方法
  19. 传递的值是this,在js里就不用再写$(this)
  20. ACM数据结构-并查集

热门文章

  1. 基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
  2. 【Ubuntu】16.04网卡信息配置
  3. C++Review5_Swap交换
  4. PHP四大主流框架的优缺点总结
  5. 洛谷P-4782 2-sat+Tarjan
  6. 2020了你还不会Java8新特性?(六)Stream源码剖析
  7. 力扣208——实现 Trie (前缀树)
  8. Keil uVision4的简单使用
  9. 手算CRC及其实现
  10. ASP.NET Core 启用跨域请求