性能测试工具 [Jmeter] 内置环境变量总结

麦兜珊 · 2019年10月17日 · 2555 次阅读

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

  • Vars **对应于org.apache.jmeter.threads.JMeterVariables.java类,只能在当前线程内使用(局部变量),可以保存String或Object**

      这个变量实际引用了 JMeter 线程中的局部变量容器(本质上是 Map),因此可以通过 put 和 get 方法访问 JMeter 中的变量。这个变量是所有内置变量中最有用的,它是测试用例与 BeanShell 交互的桥梁。

       1) vars.get(String key):从 jmeter 中获得变量值,取出的值为 String 类型
       2) vars.getObject(String key):从 jmeter 中获得变量值,取出的值为 Object 类型
       3) vars.put(String key,String value):将字符串类型的数据存到 jmeter 变量中
       4) vars.putObject(String key,Object value):将对象类型的数据存到 jmeter 变量中
       5) vars.remove(String key):删除某个变量

      举例如下:
      
List list = new ArrayList();//新建一个list类型的变量
list.add("aaa");//添加字符串元素到list变量中
list.add("bbb");//添加字符串元素到list变量中
vars.putObject("list",list);//将list对象的值赋值给list变量
Object Value = vars.getObject("list");//获取list变量中的对象
log.info(Value.toString());//log.info只能输出String类型变量
      

  • Props **对应于java.util.Properties类,可以跨线程组使用(全局变量),只能保存String**

      该变量引用了 JMeter 的配置信息,它的使用方法与 vars 类似,但是只能 put 进去 String 类型的值,而不能是一个对象。props 继承了 Hashtable 的类,所以拥有与 vars 类似的 get 和 put 方法,另外还继承了 Hashtable 的其他方法

       1) props.get("属性名"):获取在文件 jmeter.properties(jmeter 安装目录 bin 下) 中定义的属性名,或者获取已设置的全局变量值
       2) props.put("msg","aaa"):将字符串 aaa 赋值给变量 msg,只能保存 String 类型的值
       3) props.containsKey("PROPERTY_NAME"):判断某项属性是否存在,返回布尔值
       4) props.contains("PROPERTY_VALUE"):判断某项值是否存在,返回布尔值
       5) props.remove("PROPERTY_NAME"):删除某个变量
      举例如下:
      
String str = "aaaa";
props.put("str",str);//将list对象的值赋值给list变量
log.info("打印线程组1中的变量str:"+props.get("str"));
      

  • Prev **对应于org.apache.jmeter.samplers.SampleResult类,获取前面的sample返回的信息**

       1) prev.getResponseDataAsString():以字符串 String 的形式获取响应信息
       2) prev.getResponseCode() :以字符串 String 的形式获取响应 Code

      举例如下:
      
String response = prev.getResponseDataAsString();
log.info("**********");
log.info(response);
      

  • Ctx **对应于org.apache.jmeter.threads.JMeterContext类,获取当前线程的上下文,理论上通过这个几乎可以控制当前线程相关的一切,不过这要求使用者非常熟悉JMeter的源码**

待补充

  • Log **将需要的文件写到jmeter日志文件中,也就是jmeter.log,如果是使用命令行运行jmeter,则写入到对应的日志文件中**

       1) log.info(String):info 级别日志,只能是 Sting 类型
       2) log.error(String) :error 级别日志,只能是 Sting 类型

      举例如下:
      
log.info("info级别日志输出");
log.error(”error级别日志输出“);
      

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册