zoukankan      html  css  js  c++  java
  • BeanShell(二)

    BeanShell使用

    BeanShell是一种完全符合java语法规范的脚本语言,也就是java源代码解释器

    有如下几种BeanShell

    • 定时器
    • BeanShell取样器

    BeanShell取样器

    调用Java方法有三种:

    第一种:jar 包

    步骤如下:

    • 在 idea 工具里面调试好算法
    • 打 jar 包 (待学习)
    • 在 jmeter 里面引入jar包
    • 在 BeanShell 里面写好算法,进行调用
    import testmd5.MD5
    
    String newpwd = '123456';
    MD5 getMD5 = new MD5();
    String res = getMd5.GetMD5Code(newpwd);
    vars.put("resnewpwd", res);    // vars 用来设置变量方便后面引用;put 将数据保存到 jmeter 变量中,把 res 保存到 resnewpwd中
    System.out.println(res);
    

    第二种:引入 java 源文件

    示例:

    source(" java文件路径")           // 其中java文件路径可以使用绝对路径,也可以使用相对路径
    source("D:workspacejmetersrcjmeterRsaUtil.java");
    

    或者

         source("RsaUtil.java");  //文件位于jmeter bin目录下
         String password= RsaUtil.encrpty("keeplovejava");
    

    调用 class 文件

    语法:
          addClassPath("class文件所在目录");
          import 类名;
    

    示例:

    addClassPath("D:");     //可以是父级目录或者祖先级目录
    import com.RsaUtil;
    String password= RsaUtil.encrpty("keeplovejava");
    //引入class文件的path路径跟引入java文件不同,对比如下:
    source("D:workspacejemtersrcjmeterRsaUtil.java");   //使用绝对路径时必须要指定文件的完整路径。
    addClassPath("D:");       //class文件只要在D盘中就可以,不一定在D盘根目录中,不用指定完整路径。
    

    BeanShell常用变量

    • log :用于打印日志
    log.info("This is log info!");
    
    • vars: 对变量进行读写操作
    vars.get(key);              //获取变量值
    vars.put(key, val);       //给变量赋值
    vars.putObject(“user”,new UserDto());
    
    • prev:获取前面sampler返回的信息
    prev.getResponseDataAsString():获取响应信息
    prev.getResponseCode():获取响应code
    

    BeanShell断言

    内置变量
    Failure:是否失败,boolean类型
    FailureMessage:失败日志,在断言失败时显示
    
    int iStock = Integer.parseInt(vars.get("p_stock"));
    if (iStock > 1500){
    	Failure = true;
    	FailureMessage = "库存数量超过了1500";
    	// ResponseData是服务器返回的byte[]类型的数据
    	// 如果想打印,必须转换为String类型的,用new String(ResponseData)
    	log.info(new String(ResponseData));
    	//打印当前请求的url, SamplerData是String类型的数据
    	log.info(SamplerData);
    }
    

    BeanShell写数据到文件

    需求
    1、调用登录接口,获取token值 2、将token值保存到一个文件里
    
    String line = vars.get("num")+","+vars.get("token");
    
    try {
    	BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/***/Desktop/output.txt",true));
    	writer.write(line);
    	writer.newLine();
    	writer.close();
    } catch (IOException e) {
    	e.printStackTrace();
    }
    

    image

  • 相关阅读:
    DataImport(译)
    Spring JDBC最佳实践(1)
    在Spring中快速使用EHCache注解
    VS 2010 WPF核心是哪些功能特性 ?
    [你必须知道的.NET]第十五回:继承本质论
    C#设置本地网络(DNS、网关、子网掩码、IP)
    [你必须知道的.NET]第十六回:深入浅出关键字using全接触
    逆变与协变
    C# 判断网站是否能访问或者断链
    接口与抽象类
  • 原文地址:https://www.cnblogs.com/DeryKong/p/14992372.html
Copyright © 2011-2022 走看看