欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jmeter?BeanShell?內(nèi)置變量vars、props、prev的使用詳解

 更新時間:2022年10月10日 08:27:40   作者:溫一壺清酒  
這篇文章主要介紹了Jmeter?BeanShell?內(nèi)置變量vars、props、prev的使用?,文中給大家介紹了Jmeter中關(guān)于BeanShell的相關(guān)知識,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

在使用Jmeter過程中,或多或少都會接觸些BeanShell,它會使工具的使用,變得更靈活。

Jmeter中關(guān)于BeanShell的有:

  1.BeanShell Sampler 取樣器:完成Beanshell請求組件中定義的腳本功能;

  2.BeanShell PostProcessor 后置處理器:可通過編程方式獲取對應(yīng)請求的響應(yīng)結(jié)果;  

  3.BeanShell PreProcessor 前置處理器:可通過編程方式在發(fā)起請求以前做預(yù)處理,比如編碼或者加密;

  4.Beanshell 斷言:可通過編程方式實(shí)現(xiàn)復(fù)雜的斷言邏輯;

  5.Beanshell 計時器:編碼實(shí)現(xiàn)條件定時功能;

  6.BeanShell Listener 監(jiān)聽器:監(jiān)聽Beanshell運(yùn)行結(jié)果。

目前我使用較多的是前三種元件。使用過程中,就會使用一些內(nèi)置變量,所以這也是今天的主要內(nèi)容。

vars

vars 在 JMeter 內(nèi)部,映射 org.apache.jmeter.threads 的 JMeterVariables 類,官方文檔:https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html

注意點(diǎn):

  • vars 提供了對當(dāng)前線程變量的讀寫能力
  • 所有的 JMeter 變量都是 java字符串
  • 把數(shù)據(jù)存放到一個 JMeter 變量中,需要先將它轉(zhuǎn)換成字符串

getThreadName

方法聲明
public String getThreadName()

功能
獲取當(dāng)前運(yùn)行線程名

String threadName = vars.getThreadName();
log.info("threadName:"  + threadName);

getIteration

方法聲明
public int getIteration()

功能
獲取線程當(dāng)前的迭代號

int itNum = vars.getIteration();
String num = String.valueOf(itNum);
log.info("itNum:"  + num);

這里有個注意點(diǎn),就是在開始時候提到的,數(shù)據(jù)放到變量中,需要將數(shù)據(jù)轉(zhuǎn)換成String類型。

put

方法聲明
public void put(String key, String value)

Parameters:
key - the variable name
value - the variable value

功能
創(chuàng)建或更新字符串變量

創(chuàng)建變量

vars.put("name","溫一壺清酒");
vars.put("age","5");

String varsName = vars.get("name");
log.info("varsName:"+ varsName);
String varsAge = vars.get("age");
log.info("varsAge:"+ varsAge);

注意點(diǎn):age字段值5,需要是字符串類型,否則會報錯。

Error in method invocation: Method put( java.lang.String, int ) not found in class'org.apache.jmeter.threads.JMeterVariables'

修改變量

vars.put("name","溫一壺清酒 博客園");
String varsName = vars.get("name");
log.info("varsName:"+ varsName);

get

方法聲明
public String get(String key)

功能
獲取變量的值并將其轉(zhuǎn)換為字符串,若變量存在則將值轉(zhuǎn)換為字符串,否則返回 null

String varsSex = vars.get("sex");
log.info("varsSex:"+ varsSex);

在put方法中,已經(jīng)使用了get的方法,這里列舉個獲取不到變量的情況,返回null

putObject

方法聲明
public void putObject(String key,Object value)

Parameters:
key - the variable name
value - the variable value

功能
創(chuàng)建或更新一個非字符串變量。

vars.putObject("number",8);
vars.putObject("list",[2,4,6,8,10]);
vars.putObject("array",[1,3,5,7,9,11] as int[]);
vars.putObject("map",["name":"溫一壺清酒","source":"博客園"]);
log.info("number:"+ vars.getObject("number").toString());
log.info("list:"+ vars.getObject("list").size());
log.info("array:"+ vars.getObject("array").length);
log.info("map:"+ vars.getObject("map").get("name"));

getObject

方法聲明
public Object getObject(String key)

功能
獲取變量的值(不轉(zhuǎn)換為字符串)。若變量不存在則返回null

remove

方法聲明
public Object remove(String key)

功能
刪除一個變量,并返回變量的值,若變量不存在則返回 null

vars.put("name","溫一壺清酒 博客園");
vName = vars.remove("name");
log.info("vName:"+ vName);

vSex = vars.remove("sex");
log.info("vSex:"+ vSex);

props

props 映射 java.util 的 Properties 類。java.util.Properties 這個類是線程安全的;多個線程可以共享一個 Properties 對象

vars跟props的區(qū)別

  • vars 是對變量進(jìn)行讀寫操作, 而 props 主要是對屬性進(jìn)行讀寫操作
  • vars 只能在當(dāng)前線程組內(nèi)使用,props 可以跨線程組使用 ,因?yàn)閷傩钥梢钥缇€程組但是變量不行
  • vars 只能保存 String 或者 Object,props 可以是 Hashtable 或者 Object

getProperty

方法聲明
public String getProperty(String key)

public String getProperty(String key, String defaultValue):當(dāng) key 不存在則返回默認(rèn)值

功能
用指定的key在此屬性列表中搜索屬性,如果在此屬性列表中未找到該key,則接著遞歸檢查默認(rèn)屬性列表及其默認(rèn)值。如果未找到屬性,則此方法返回 null

timeFormat = props.getProperty("jmeter.save.saveservice.timestamp_format");
log.info("timeFormat:"+ timeFormat);
propsTest = props.getProperty("jmeter.save.saveservice.timestamp");
log.info("propsTest:"+ propsTest);
propsTest = props.getProperty("jmeter.save.saveservice.timestamp","溫一壺清酒 博客園");
log.info("propsTest:"+ propsTest);

get

方法聲明
public synchronized V get(Object key)

功能
獲取屬性值,跟 getProperty 類似

pTimeFormat = props.get("jmeter.save.saveservice.timestamp_format");
log.info("pTimeFormat:"+ pTimeFormat);
pPropsTest = props.get("jmeter.save.saveservice.timestamp");
log.info("pPropsTest:"+ pPropsTest);

setProperty

方法聲明
public Object setProperty(String key,String value)

功能
設(shè)置屬性值

props.setProperty("pName","溫一壺清酒");
propsName = props.getProperty("pName");
log.info("propsName:"+ propsName);

put

方法聲明
public synchronized V put(Object key)

功能
設(shè)置屬性值,跟 setProperty 類似

props.put("pName","溫一壺清酒");
pPropsName = props.get("pName");
log.info("pPropsName:"+ pPropsName);

propertyNames

方法聲明
public Enumeration<?> propertyNames()

功能
返回屬性列表中所有key的枚舉,如果在主屬性列表中未找到同名的key,則包括默認(rèn)屬性列表中不同的key

propsNames = props.propertyNames();
propsNames.each{
	log.info(it)
	}

size

方法聲明
public int size()

功能
返回有多少個屬性

pPropsCount = props.size();
log.info("pPropsCount:"+ pPropsCount);

remove

方法聲明
public synchronized V remove(Object key)

功能
刪除一個變量,并返回變量的值,若變量不存在則返回 null

props.put("pName","溫一壺清酒");
rName = props.remove("pName");
log.info("rName:"+ rName);

rSex = props.remove("sex");
log.info("rSex:"+ rSex);

prev

prev 提供對當(dāng)前取樣器結(jié)果的訪問能力,映射 org.apache.jmeter.samplers 的 SampleResult 類
官方文檔: https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html

getResponseCode

方法聲明
public String getResponseCode()

功能
獲取響應(yīng)狀態(tài)碼

responseCode = prev.getResponseCode() ;
log.info("responseCode:" + responseCode);

2022-10-04 15:34:29,057 INFO o.a.j.u.BeanShellTestElement: responseCode:200

isResponseCodeOK

方法聲明
public boolean isResponseCodeOK()

功能
判斷響應(yīng)狀態(tài)碼是否為OK對應(yīng)的狀態(tài)碼(200),結(jié)果只有true和false

responseCodeBoolean = prev.isResponseCodeOK();
log.info("responseCodeBoolean:" + responseCodeBoolean);

2022-10-04 15:36:35,077 INFO o.a.j.u.BeanShellTestElement: responseCodeBoolean:true

getThreadName

方法聲明
public String getThreadName()

功能
獲取線程名

prevThreadName = prev.getThreadName();
log.info("prevThreadName:" + prevThreadName);

2022-10-04 15:39:17,955 INFO o.a.j.u.BeanShellTestElement: prevThreadName:prevThreadName

getResponseDataAsString

方法聲明
public String getResponseDataAsString()

功能
獲取String類型的響應(yīng)結(jié)果

prevResponse = prev.getResponseDataAsString();
log.info("prevResponse:" + prevResponse);

getStartTime

獲取請求開始時間

getEndTime

獲取請求結(jié)束時間

getSamplerData

獲取請求內(nèi)容

好了,以上就是平時經(jīng)常用到的一些內(nèi)置變量的方法,還有其他的方法,可以參考源碼或官方文檔。

到此這篇關(guān)于Jmeter BeanShell 內(nèi)置變量vars、props、prev的使用的文章就介紹到這了,更多相關(guān)Jmeter BeanShell 內(nèi)置變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基于直方圖應(yīng)用的相似圖片識別實(shí)例

    Java基于直方圖應(yīng)用的相似圖片識別實(shí)例

    這篇文章主要介紹了Java基于直方圖應(yīng)用的相似圖片識別實(shí)例,是非常實(shí)用的技巧,多見于圖形里游戲中,需要的朋友可以參考下
    2014-09-09
  • java線程池ExecutorService超時處理小結(jié)

    java線程池ExecutorService超時處理小結(jié)

    使用ExecutorService時,設(shè)置子線程執(zhí)行超時是一個常見需求,本文就來詳細(xì)的介紹一下ExecutorService超時的三種方法,感興趣的可以了解一下
    2024-09-09
  • 如何使用cmd命令行窗口運(yùn)行java文件

    如何使用cmd命令行窗口運(yùn)行java文件

    多年以來一直使用的是IDE來寫java項(xiàng)目,導(dǎo)致很多的最基礎(chǔ)的東西都漸漸模糊了,最近遇到一個問題就是如果命令行來運(yùn)行一個java項(xiàng)目,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于如何使用cmd命令行窗口運(yùn)行java文件的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 詳解Spring Cloud Zuul中路由配置細(xì)節(jié)

    詳解Spring Cloud Zuul中路由配置細(xì)節(jié)

    本篇文章主要介紹了詳解Spring Cloud Zuul中路由配置細(xì)節(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringCloud+Tornado基于jwt實(shí)現(xiàn)請求安全校驗(yàn)功能

    SpringCloud+Tornado基于jwt實(shí)現(xiàn)請求安全校驗(yàn)功能

    這篇文章主要介紹了SpringCloud+Tornado基于jwt實(shí)現(xiàn)請求安全校驗(yàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 一個Servlet是如何處理多個請求的?

    一個Servlet是如何處理多個請求的?

    以前我一直以為一個Servlet只能處理一個請求,后來發(fā)現(xiàn)是自己太菜了,可以借助攜帶一個參數(shù)來完成多個請求的處理,根據(jù)參數(shù)的不同,在核心的service方法中調(diào)用不同的業(yè)務(wù)方法,來實(shí)現(xiàn)處理多個servlet請求的目的,廢話不多說,直接上代碼,需要的朋友可以參考下
    2021-06-06
  • 基于Java?利用Mybatis實(shí)現(xiàn)oracle批量插入及分頁查詢

    基于Java?利用Mybatis實(shí)現(xiàn)oracle批量插入及分頁查詢

    這篇文章主要介紹了基于Java?利用Mybatis實(shí)現(xiàn)oracle批量插入及分頁查詢,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-07-07
  • springBoot集成redis(jedis)的實(shí)現(xiàn)示例

    springBoot集成redis(jedis)的實(shí)現(xiàn)示例

    Redis是我們Java開發(fā)中,使用頻次非常高的一個nosql數(shù)據(jù)庫,本文主要介紹了springBoot集成redis(jedis)的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java內(nèi)存分布?xì)w納整理詳解

    Java內(nèi)存分布?xì)w納整理詳解

    這篇文章主要介紹了java程序運(yùn)行時內(nèi)存分布詳解,需要的朋友可以參考下
    2017-04-04
  • Java用?Gradle配置compile及implementation和api的區(qū)別

    Java用?Gradle配置compile及implementation和api的區(qū)別

    這篇文章主要介紹了Java用Gradle配置compile及implementation和api的區(qū)別,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06

最新評論