赞
踩
BeanShell组件
完全符合java的语法
以及自带语法的组件,总共有6种
信息打印
//在日志中打印张三
log.info("张三");
错误信息打印
//在日志中打印错误信息
log.error("打印错误信息");
拼接打印
//不支持整类,需要使用字符串拼接
log.info(123 + "");
java打印
//java打印,在控制台显示
System.out.println("java打印");
1.对于 [用户定义的变量] 可以直接通过vars.get()取值
2.对于通过 [正则表达式] 或其他表达式获取到的中间变量可以直接通过vars.get()取值
3.不同的BeanShell之间可以相互设置或者获取值
获取变量
//获取用户定义变量中的值
log.info(vars.get("name"));
定义变量
//定义一个变量
vars.put("age","18");
//定义一个变量
props.put("age","18");
//获取线程组1中BeanShell取样器1定义变量的值
log.info(props.get("age"));
注意:执行的时候记得勾选测试计划中的 [独立运行每个线程组] ,因为线程组执行是无序的
//获取响应码
log.info(prev.getResponseCode());
//获取响应的内容
log.info(prev.getResponseDataAsString());
准备一个java文件
public class Test{
public int sum(int a,int b){
return a+b;
}
}
BeanShell调用java文件
//引入java文件 (java文件所在的路径)
source("D:\\Test.java");
//创建一个对象并调用方法
int result = new Test().sum(5,6);
//拼接打印
log.info(result + "");
准备的项目及代码内容——将项目打包成jar包
在测试计划中引入jar包
BeanShell调用jar包
//导包(import跟的是java中的包名.类名)
import com.xj.Test;
//创建一个对象并调用方法
int result = new Test().sum(5,6);
//拼接打印
log.info(result + "");
原理:通过cmd命令执行python.py文件,然后将获取输出并打印的值作为返回结果
准备如下代码的一个pthon文件
import time
def get_random_number():
times = str(int(time.time()))
print(times)
if __name__ == '__main__':
get_random_number()
BeanShell调用python文件
//导包 import java.io.BufferedReader; import java.io.InputStreamReader; //组建cmd命令并执行python文件 String command = "cmd /c python D:/test.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("reponse_data:"+reponse_data);
准备如下代码的一个pthon文件
import argparse import time def get_random_number(): # 接收cmd命令里面的参数 parse = argparse.ArgumentParser() parse.add_argument("-t", "--ticket") args = parse.parse_args() ticket = args.ticket # print("ticket:%s" % ticket) # 随机数 times = str(int(time.time())) print(ticket + times) if __name__ == '__main__': get_random_number()
BeanShell调用python文件
//导包 import java.io.BufferedReader; import java.io.InputStreamReader; //组建cmd命令并执行python文件 String command = "cmd /c python D:/test.py -t admin"; 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("reponse_data:"+reponse_data);
准备如下代码的一个pthon文件
import argparse
def get_random_number():
# 接收cmd命令里面的参数
parse = argparse.ArgumentParser()
parse.add_argument("-t", "--ticket", action="append")
args = parse.parse_args()
ticket = args.ticket
print("ticket:%s" % ticket)
if __name__ == '__main__':
get_random_number()
BeanShell调用python文件
//导包 import java.io.BufferedReader; import java.io.InputStreamReader; //组建cmd命令并执行python文件 String command = "cmd /c python D:/test.py -t admin -t 123"; 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("reponse_data:"+reponse_data);
准备如下代码的一个pthon文件
import argparse
def get_random_number():
# 接收cmd命令里面的参数
parse = argparse.ArgumentParser()
parse.add_argument("-t", "--ticket", action="append")
args = parse.parse_args()
ticket = args.ticket
print("ticket:%s" % ticket)
if __name__ == '__main__':
get_random_number()
使用 “用户定义的变量” 定义一个变量
BeanShell调用python文件
传参的方式1:可以使用
${}
取值
//导包 import java.io.BufferedReader; import java.io.InputStreamReader; //组建cmd命令并执行python文件 String command = "cmd /c python D:/test.py -t admin -t ${name}"; 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("reponse_data:"+reponse_data);
传参的方式2:可以使用
vars.get()
获取值之后在拼接
//导包 import java.io.BufferedReader; import java.io.InputStreamReader; String names = vars.get("name"); //组建cmd命令并执行python文件 String command = "cmd /c python D:/test.py -t admin -t " + names; 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("reponse_data:"+reponse_data);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。