jmeter--7.BeanShell

目录

1. beanshell常用语法

1.1 log:日志写入

1.2 vars:设置和引用局部变量(同线程组)

1.3 props:设置和引用全局变量(跨线程组)

1.4 prev:获取前一个请求返回的信息

2. beanshell调用java代码

2.1 beanshell直接调用java文件(针对单个文件)

2.2 beanshell直接调用jar包

3. beanshell调用python代码

3.1 beanshell调用无参函数

3.2 beanshell调用有参数的函数


1. beanshell常用语法

1.1 log:日志写入

log.info("测试");         //打印字符串
log.info(123+"");        //打印数字需要拼接一个字符串,因为无法直接打印int
log.error("打印错误日志");    //打印错误日志使用error    
System.out.println("java打印")  //java打印,在控制台输出

输出结果

1.2 vars:设置和引用局部变量(同线程组

  • 通过用户自定义变量赋值,然后通过log.info(vars.get("key")); 的方式获取

  • 通过提取器的方式获取需要的值

  • 通过【vars.put("age","18"); 】进行设置变量,通过【log.info(vars.get("age"));】获取变量。可以是不同的BeanShell 取样器也可以使用beanshell处理器进行

1.3 props:设置和引用全局变量(跨线程组

props.put("name","张三"); //设置值
log.info(props.get("name")); //获取值--跨线程组

1.4 prev:获取前一个请求返回的信息

log.info(prev.getResponseCode()+"");  //获取上一个请求的响应码
log.info(prev.getResponseDataAsString());  //获取上一个请求的响应结果数据

2. beanshell调用java代码

2.1 beanshell直接调用java文件(针对单个文件)

java代码内容

package test;

public class Test {
   
   public int add(int a,int b) {
         return a+b;
   }

}

调用方法

  • 将java文件放入指定路径中,然后通过beanshell调用文件路径
  • 调用java代码并传值输出
source("D:/study/course/Jmeter/Test.java");   //通过source()引入java文件,这里的路径需要转义
int result = new Test().add(3,5);   //创建一个对象,并且调用它的方法
log.info("调用java打印结果为:"+result+"");   //打印

打印结果

2.2 beanshell直接调用jar包

在测试计划中引入jar包

调用方法

import test.Test;  //导包
int result = new Test().add(5,1); //创建一个对象,并且调用它的方法
log.info("调用java打印结果为:"+result+""); //打印

打印结果

3. beanshell调用python代码

3.1 beanshell调用无参函数

python代码内容

import random

def get_random():
    rd = str(random.randint(1,100))
    print(rd)

if __name__ == "__main__":
    get_random()

调用方法

import java.io.BufferedReader;  //导包
import java.io.InputStreamReader;

String command = "cmd /c python D:/study/course/Jmeter/test.py";  //组建cmd命令并执行py文件
Runtime rt = Runtime.getRuntime(); //初始化一个运行时对象
Process pr = rt.exec(command); //通过运行时对象运行cmd命令。

pr.waitFor();  //运行时等待

//调用pr进程对象获取到它的输入流。读取pr文件流的内容,并且保存到reponse_data
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder response = new StringBuilder();
String line = "";
while((line=br.readLine())!=null){
    response.append(line);
};
String reponse_data = response.toString();
br.close();
log.info("通过python代码获取到的随机数:reponse_data:"+reponse_data);//打印返回的内容

 打印结果

3.2 beanshell调用有参数的函数

python代码内容

def get_random():
    #接收cmd命令里面的参数
    parse = argparse.ArgumentParser()
    parse.add_argument("-t","--ticket")
    args = parse.parse_args()
    ticket = args.ticket
    #随机数
    times=str(int(time.time()))
    print(ticket+times) #打印

if __name__ == "__main__":
    get_random()

 调用方法-与无参数的区别就是在组建cmd命令并执行py文件时加一个参数的写入

import java.io.BufferedReader;  //导包
import java.io.InputStreamReader;

String command = "cmd /c python D:/study/course/Jmeter/test.py -t test--";  //组建cmd命令并执行py文件
Runtime rt = Runtime.getRuntime(); //初始化一个运行时对象
Process pr = rt.exec(command); //通过运行时对象运行cmd命令。

pr.waitFor();  //运行时等待

//调用pr进程对象获取到它的输入流。读取pr文件流的内容,并且保存到reponse_data
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder response = new StringBuilder();
String line = "";
while((line=br.readLine())!=null){
    response.append(line);
};
String reponse_data = response.toString();
br.close();
log.info("通过python代码获取到的随机数:reponse_data:"+reponse_data);//打印返回的内容

打印结果

 

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值