• JSR223 和Beashell 使用方法


    A.JSR223 是基于 groovy 的语法,所以先了解下常用 JSR223 的方法

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

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

    3. vars - (JMeterVariables):操作 jmeter 变量,提供读取/写入访问变量的方法。这个 变量实际引用了 JMeter 线程中的局部变量容器(本质上是 Map),它是测试用例与 BeanShell 交互的桥梁,常用方法: a) vars.get(String key):从 jmeter 中获得变量值 b) vars.put(String key,String value):数据存到 jmeter 变量中

    4. 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");

    5. prev - (SampleResult):获取前面的 sample 采样的结果,常用方法: a) getResponseDataAsString():获取响应信息 b) getResponseCode() :获取响应 code 我本地开发一个接口进行演示,看下我的请求

    B.Beashell:

    正则表达式获取的值存在本地:

    代码如下:

    String getdata = vars.get("lastmileTrackingNumber1");
    String filename = "C:/Desktop/data/invioce/lastmileTrackingNumber50.txt";
    FileWriter writer;
            try {
                writer = new FileWriter(filename,true);
                writer.write(getdata);
                writer.write(" ");
                writer.flush();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

    C.那其他接口如何引用这个值呢?我们需要借助于 csv data 这个插件

     我们需要用到文件的 lastmileTrackingNumber值的时候,就用 lastmileTrackingNumber去引用即可,见 图中插件配置第三行,变量名命名;

     元件配置解释:

    1、Filename:文件名,指保存信息的文件目录,可以相对或者绝对路 径,可通过 browse 按钮添加引用的文件

    2、File encoding:csv 文件编码,可以不填,一般为 UTF-8

    3、Variable Names(comma-delimited):变量名称,因为我们只有一 个 lastmileTrackingNumber参数,变量使用格式 ${name},多个参数也支持,参数顺序 跟文件里的列相对应,比如第一个参数对应第一列,用逗号分隔,第 二个参数对应第二列

    4.ignore first line:按照字面意思理解即可,就是第一行要不要 取值的意思

    5. Delimiter(use ' for tab'):定义分隔符为',',若参数化文 档中有多列,则每列间用逗号分隔,跟上文第 3 条对应一起理解

    6. 是否允许引用数据。默认设置为 false。例如数据样式为:"101-005-98536","57" 时,此处需设置为 true,一般默认为 false 即 可,这个一般都是默认;

    7. Recycle on EOF?:是否循环读取参数文件内容。默认设置为 true。 设置为 true 时,当已经读取完参数文件内的测试用例数据,还需要 继续获取用例数据时,此时会循环读取参数文件数据;设置为 false 时,若已至文件末尾,则不再继续读取测试数据。

    8. Sotp thread on EOF?:当读取到参数文件末尾时,是否停止读取 线程。默认为 false。当 Recycle on EOF? 设置为 true 时,此项 不起任何作用。当且仅当 Recycle on EOF? 为 false 时,此项配置 才生效;

      举例理解:

        a. 当 Recycle on EOF 选择 true 时,Stop thread on EOF 选择 true 和 false 无任何意义,通俗的讲,在前面控制了不停的循环读 取,后面再来让 stop 或 run 没有任何意义

         b. 当 Recycle on EOF 选择 false 时,Stop thread on EOF 选择 true,线程 4 个,参数 3 个,那么只会请求 3 次

        c. 当 Recycle on EOF 选择 false 时,Stop thread on EOF 选择 flase,线程 4 个,参数 3 个,那么会请求 4 次,但第 4 次没有参数 可取,不让循环,所以第 4 次请求错误

    9. Sharing mode:共享模式,即参数文件变量作用域。主要有以下 几种方式:

      All threads:当前测试计划中的所有线程组中的所有的线程均有效。

      Current thread group:当前的线程组中的线程有效。

      Current thread:当前线程有效。

      举例理解:

          1.All threads:计划中所有线程,假如说有线程 1 到线程 n (n>1),线程 1 取了一次值后,线程 2 取值时,取到的是 csv 文件中 的下一行,即与线程 1 取的不是同一行。

          2.Current thread group:当前线程组,假设有线程组 A、线程组 B, A 组内有线程 A1 到线程 An,线程组 B 内有线程 B1 到线程 Bn。取之 情况是:线程 A1 取到了第 1 行,线程 A2 取第 2 行,现在 B1 取第 1 行,线程 B2 取第 2 行。

          3.Current thread:当前线程。假设测试计划内有线程 1 到线程 n (n>1),则线程 1 取了第 1 行,线程 2 也取第 1 行。

  • 相关阅读:
    docker 安装 redis
    docker 安装 fastdfs
    docker 安装 mysql5.7
    docker 安装 nacos
    docker 安装 gitlab-ce
    gitlab记录
    git记录
    ubuntu命令
    java html table 转 excel,给予jdom 和 poi
    自律挑战
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13278543.html
Copyright © 2020-2023  润新知