beanshell_讲解

Posted njq666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beanshell_讲解相关的知识,希望对你有一定的参考价值。

 

Beanshell

请求beanshell请求

① 勾选每次调用前重置,里面定义的变量就会被重置。

② 脚本文件可以导入beanshell脚本

注意:在idea写错误有提示写完了在拷贝到beanshell里运行

技术图片

脚本—运行结果在cmd里显示—print

 技术图片

jmeter日志里显示—log.info(变量名);

 技术图片

Jmeter添加变量—beanshell添加变量后面请求用${变量}

启动jartest-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) :设置响应结果的编码

以上是关于beanshell_讲解的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter之BeanShell变量使用讲解

jmeter beanshell调用jmeter函数

jmeter中的beanshell里怎么判断两个值大小

jmeter中通过beanshell生成身份证号

Jmeter(三十四)_Beanshell解析并提取json响应

BeanShell Processor_使用Java处理脚本