zoukankan      html  css  js  c++  java
  • Beanshell断言

    1、Beanshell

    Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标准 java 语法及一些扩展脚本语法,类似于 javaScript 和 perl。

    2、内置变量

    Beanshell Sampler 中除了可以使用标准 java 语法之外,还有一些定义好的变量,可以直接使用。

    SampleResult
    ResponseCode,
    ResponseMessage
    IsSuccess
    Label
    FileName
    ctx
    vars
    props
    log
    下面我按使用频率,分别讲一下最常用的几种变量。

    3、log

    用于打印日志,最常用,也最简单;
    打印在 jmeter.log 中,可以设置打印级别,可以打印字符串、变量等。
    使用方法:

    1、打印 info 形式的普通字符串日志:
    log.info("hello world"); 输出 hello world

    2、拼接字符串和变量 (其中 token 是 jmeter 局部变量):
    log.info("hello world" + "${token}"); 输出 hello world 和 token 变量的拼接结果

    3、打印自定义变量
    str = "12345";
    log.info(str); 输出 12345

    4、打印 error 形式的普通字符串日志:
    log.info("hihihi");
    log.error("aaaaa");
    输出的区别:
    2018-12-27 19:05:13,158 INFO o.a.j.u.BeanShellTestElement: hihihi
    2018-12-27 19:05:13,158 ERROR o.a.j.u.BeanShellTestElement: aaaaa

    print() 打印日志
    在 beanshell 中还可以使用 print() 函数来打印日志,输出字符串等信息;

    print() 是在控制台中输出信息,log() 默认是在 jmeter.log 中输出信息。

    4、vars

    用于存取 jmeter 局部变量,很常用,一定要掌握;
    通常用于存取字符串内容,也可以存取对象;
    vars.get()

    String mykey = vars.get("keyname"); 

    获取变量名为 keyname 的值,并保存在 mykey 中。

    vars.put()

    vars.put("keyname","value");
    把变量 keyname(值为 value)保存到 jmeter 变量中。

    vars.putObject("OBJname",new Object());
    把一个对象 OBJname 保存到 jmeter 变量中
    vars.remove()

    vars.remove("keyname");

    从 jmeter 变量中删除 keyname。

    5、props

    用于存取 jmeter 全局的静态变量;
    其中的 key 和 value 均是字符串形式;
    ymd = props.get("START.YMD");
    获取属性 START.YMD 的值(脚本启动日期)。

    props.put("PROP1","1234");
    把 1234 存入全局属性 PROP1 中。
    ctx

    当前线程的上下文信息;
    使用举例:

    ctx.getCurrentSampler(); 获取当前 sampler 请求

    ctx.getPreviousSampler(); 获取前一个 sampler 请求

    ctx.getThreadNum(); 获取当前线程的序号,从 0 开始计数

    ctx.getThread(); 获取当前线程

    ctx.getThreadGroup(); 获取当前线程组

    ctx.getProperties(); 获取所有属性

    ctx.getVariables(); 获取当前线程的所有变量

    SampleResult.setResponseData(data);
    自定义响应数据。

    String jsonContent = prev.getResponseDataAsString();
    log.info("jsonContent:"+ jsonContent);
    //JSONObject response = new JSONObject(jsonContent);
    // log.info("response:"+ response);
    // 获取接口返回的response数据
    String response_data = prev.getResponseDataAsString();
    log.info("result:" + "${result}");
    log.info("response:" + response_data);
    log.info("------------------");
    if("${result}".contains(" ")){
    // 多个关键词,只要包含一个即通过
    String[] keywords = "${result}".split(" ");
    //log.info(keywords.length);
    Boolean result = true;
    int sum = 0;
    int str2 = keywords.length;
    for(int i = 0; i< keywords.length ; i++){
    log.info(keywords[i]);
    if (keywords[i].length() > 0 && response_data.contains(keywords[i])){
    sum +=1;
    }
    }
    int str1 = sum;
    log.info(sum.toString());
    log.info("str1的值"+str1);
    log.info("str2的值"+keywords.length);
    // log.info(str1)
    // log.info(str2)
    if(str1 == keywords.length){
    Failure = false;
    }
    else{
    Failure = true;
    }

    }else if(response_data.contains("${result}")){
    // 包含关键词,测试通过
    Failure = false;
    }else{
    Failure = true;
    }

  • 相关阅读:
    windows窗体中的一些事。。。
    数据库报错问题
    Winform程序调用WebService连接数据库心得
    浅谈RichTextBox在Windows Phone开发中的应用 [WP开发]
    WP7 独立存储
    安装 Visual Studio Async CTP
    C#中的弱引用(WeakReference)
    WP7开发积累
    2011.11.15
    c# 计算时间间隔
  • 原文地址:https://www.cnblogs.com/zhouzz2019/p/11201137.html
Copyright © 2011-2022 走看看