beanshell_讲解
Beanshell
请求—beanshell请求
① 勾选每次调用前重置,里面定义的变量就会被重置。
② 脚本文件可以导入beanshell脚本
注意:在idea写错误有提示写完了在拷贝到beanshell里运行
脚本—运行结果在cmd里显示—print
在jmeter日志里显示—log.info(变量名);
Jmeter添加变量—beanshell添加变量后面请求用${变量}
启动jar包test-json-1.0-SNAPSHOT-fan — cmd执行命令切换到jar的目录,然后执行命令
java -jar test-json-1.0-SNAPSHOT-fan.jar
启动后输入网址:http://localhost:8090/test_json
下面举例写展示当前日期:开发给个接口需要传递当前时间格式为yyyy-MM-dd HH:mm:ss
Beanshell写代码
import java.util.*;
import java.text.*;
Date d = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(d);
vars.put("current_date",dateStr); //给jmeter添加一个变量,内置变量
查看结果:
添加一个请求(上面启动的jar包)—查看结果
添加变量后跨请求取值 —Date传值成功
jmeter两种变量
1、函数助手
2、变相的自定义函数
第一种:
import java.util.*;
import java.text.*;
getDateStr(String format)
{
DateFormat df = new SimpleDateFormat(format);
return df.format(new Date());
}
dateStr = getDateStr("yyyy-MM-dd");
vars.put("date",dateStr);
第二种:
import java.util.*;
import java.text.*;
Date d = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(d);
vars.put("current_date",dateStr); //给jmeter添加一个变量,内置变量
在Debug Sampler里查看结果
jmeter引用java文件,记事本编辑一段java代码 ,要在控制面板—文件夹选项—查看—把隐藏已知文件扩展名得选项勾选,然后就可以改txt文件为java文件了
source("C:\\Users\\Administrator\\Desktop\\Test.java"); //引进java文件只能引用java文件不能引用jar包
beanshell代码
source("C://Users//Administrator//Desktop//Test.java");
Test test = new Test();
String str = test.hello("jiajia");
vars.put("hi",str)
结果:
Jmeter-导入外部jar包
步骤为:
·在eclipse写好代码,然后把该类打成jar包(在类上点击右键-
>Export->jar file)
·把jar包放到jmeter目录\apache-jmeter-2.13\lib\ext下
·打开jmeter,添加一个http sampler,在sampler下添加一个
BeanShell Sampler。
·在BeanShell中的头文件中导入该jar包,例
import testmail.src.hyq.utils.*
Jmeter-常用内置变量
1、log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
打印日志
2、ctx(JMeterContext):该变量引用了当前线程的上下文。
3、vars(JMeterVariables) :操作jmeter变量,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
vars.get()--从上一个http请求里正则提取器变量,用这个方法在获取到_定义个全局变量,下面引用他
props - (JMeterProperties):解决两个线程组传递参数
开发返回接口json方式—如何写断言、和提取值
http://www.bejson.com/jsoneditoronline/ 在线json格式工具 把下面内容拷贝进去
{"result":{"birthday":{"month":"12","year":"1654","day":"20"},"side":"front","address":"北京市东城区景山前街4号紫禁城敬事房","race":"汉","gender":"男","legality":{"Temporary ID Photo":0,"Screen":0,"Edited":0.991,"Photocopy":0,"ID Photo":0.009},"head_rect":{"rb":{"x":0.93333334,"y":0.7379679},"rt":{"x":0.93333334,"y":0.16042781},"lb":{"x":0.62,"y":0.7379679},"lt":{"x":0.62,"y":0.15508021}},"name":"韦小宝","id_card_number":"11204116541220243*","request_id":"1504184189,7d75096e-f9bb-49ee-83e2-f4070ca7e14c","time_used":425},"bizNo":"123456","serviceCode":"000082"}
提取json $.result.name[0]第一个值json $.result.name[1]第二个值 在上面获取值。
练习:
查看结果树里的形式
5、prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
c) setDataEncoding(String dataEncoding) :设置响应结果的编码