当前位置:   article > 正文

【JMeter】Beanshell介绍_jmeter beanshell打印日志

jmeter beanshell打印日志

什么是Beanshell

Beanshell是一种完符合java语法规范的脚本语言,同时它又有自己的语法。
应用场景:

  1. 在做一些复杂的接口测试的时候或者业务场景(自定义的加密接口,签名接口),开发给你一个java文件/class文件/jar包。调用里面的方法。
    //开发给的是java文件:引用java文件
    source("E:\\Test.java");
    //调用java文件中的类Test,生成一个对象并调用它的方法add
    int result = new Test().add(1,2);
    
    //开发给的是jar包:引入jar包再导包
    import packageName.Test;
    int result = new Test().add(1,2);
    
    //开发给的是class文件:增加class文件的路径>>导包
    addClassPath("E:\\")
    import packageName.Test;
    int result = new Test().add(1,2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  2. CSV数据驱动之后如何断言?数据库断言?
  3. 跨线程组共享变量

Beanshell有哪些?
(1) Beanshell前置处理器
(2) Beanshell定时器
(3) Beanshell后置处理器
(4) Beanshell断言
(5) Beanshell监听器
(6) Beanshell取样器

Beanshell自带的语法:内置变量

作用:内置变量的作用就是和JMeter本身的组件交互数据。

log:打印日志的内置变量

信息日志:log.info("码尚教育”);
错误日志:log.error("百里老师”);
java打印:System.out.printIn("我是java的打印语法”);
注意:java的日志不是打印在JMeter日志窗中,而是打印在控制台中。
在这里插入图片描述

JMeter日志查看:

  1. 在选项Options>日志级别Log Level中设置显示日志的级别(默认显示全部)
    在这里插入图片描述
  2. 运行完点击右上角!按钮即可调出日志窗口查看日志。在这里插入图片描述

vars:操作JMeter局部变量

本质是map,键值对。
局部变量只能在当前线程使用,全局变量可以跨线程使用。

vars.put(key,value); 设置变量的值
vars.get(key);	获取变量的值
  • 1
  • 2

示例:
提取豆瓣高分电影Top10接口中排名第一的豆瓣高分电影的title并使用《》格式化输出。

log.info("处理前: " + vars.get("title"));	//日志打印局部变量title
String title = vars.get("title"); //获取局部变量title的值并赋值给字符串变量title
title = "《"+title+"》"; //对字符串变量title进行拼接
log.info(title);	//日志打印输出处理后的title
vars.put("new_title",title);	//设置局部变量new_title并将变量title的值赋值给他
log.info("处理后: " + vars.get("new_title"));	//日志打印局部变量new_title
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

props:操作JMeter全局变量

全局变量可以跨线程使用。

props.put(key,value);	设置变量的值
props.get(key);	获得变量的值
  • 1
  • 2

示例:
将线程组1提取出来的new_title传递到线程组2中进行查询。

//线程组1:
String title = vars.get("title"); //获取局部变量title的值并赋值给字符串变量title
title = "《"+title+"》"; //对字符串变量title进行拼接
props.put("new_title",title);	//设置全局变量new_title并将变量title的值赋值给他

//线程组2:
String movie = props.get("new_title");	//获取全局变量new_title的值并赋值给字符串变量movie
log.info(movie);	//日志打印变量movie
vars.put("movie", movie);	//设置局部变量movie并将变量movie的值赋值给他。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:

  1. 在线程组2中需将全局变量vars.put转换为局部变量才可调用。无此语句无法调用成功,如下:
    在这里插入图片描述
  2. 多线程运行需勾选测试计划下的”独立运行每个线程组“才能实现从上到下按顺序执行。
    在这里插入图片描述

prev:获取前面取样器返回的信息

log.info(prev.getResponseCode());
log.info(prev.getResponseDataAsString()):
  • 1
  • 2

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/1014297
推荐阅读
相关标签
  

闽ICP备14008679号