目录
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);//打印返回的内容
打印结果文章来源:https://www.toymoban.com/news/detail-808825.html
文章来源地址https://www.toymoban.com/news/detail-808825.html
到了这里,关于jmeter--7.BeanShell的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!