小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

jmeter函數(shù)和變量(三)

 langqy 2019-07-15

接上篇 jmeter函數(shù)和變量 http://blog.csdn.net/yue530tomtom/article/details/77456506

__log

記錄一個日志并返回輸入的字符串

AttributeDescriptionRequired
日志字符串一個字符串
日志級別OUT、ERR、DEBUG、INFO(默認)、WARN或者ERROR
異常文本如果非空,會創(chuàng)建一個異常;如果不設(shè)置,函數(shù)會拋出Java自定義的異常
注釋如果存在,注釋會在字符串中展示,用于標識日志記錄了什么

OUT 和ERR的日志級別,將會分別導致輸出記錄到System.out和System.err中。在這種情況下,輸出總是會被打?。ㄋ灰蕾囉诋斍暗娜罩驹O(shè)置)。
${__log(Message)}:寫入日志文件,形如”… : Message”。
${__log(Message,OUT)}:寫到控制臺窗口。
${__log(${VAR},,,VAR=)}:寫入日志文件,形如”… VAR=value”。

這里寫圖片描述

__logn

類似log但返回空字符串
例子見__log

AttributeDescriptionRequired
日志字符串一個字符串
日志級別OUT、ERR、DEBUG、INFO(默認)、WARN或者ERROR
異常文本如果非空,會創(chuàng)建一個異常;如果不設(shè)置,函數(shù)會拋出Java自定義的異常

__BeanShell

該函數(shù)允許用戶運行一段自定義的BeanShell函數(shù),腳本可以用來設(shè)置JMeter的屬性和參數(shù)值,也可以返回數(shù)據(jù)。若想獲取更多關(guān)于beanshell詳細信息—請移步

需要注意,測試腳本中每一個獨立出現(xiàn)的函數(shù)調(diào)用,都會使用不同的解釋器,但是后續(xù)對函數(shù)調(diào)用的援引會使用相同的解釋器。這就意味著變量會持續(xù)存在,并跨越函數(shù)調(diào)用。

單個函數(shù)實例可以從多個線程調(diào)用。另外,該函數(shù)的execute()方法是同步的。
如果定義了屬性 “beanshell.function.init”,那么它會作為一個源文件傳遞給解釋器。這樣就可以定義一些通用方法和變量。在bin目錄中有一個初始化文件的例子:BeanShellFunction.bshrc。

如下變量在腳本執(zhí)行前就已經(jīng)設(shè)置了。

  • log:函數(shù)BeanShell(*)的記錄器。

  • ctx:目前的JMeter Context變量。

  • vars:目前的JMeter變量。

  • props:JMeter屬性對象。

  • threadName:線程名(字符串)。

  • sampler:當前采樣器(如果存在)。

  • sampleResult:當前采樣器(如果存在)。

(*)意味著該變量在JMeter使用初始化文件之前就已經(jīng)設(shè)置了。其他變量在不同調(diào)用之間可能會發(fā)生變化。

AttributeDescriptionRequired
beanshell腳本beanshell腳本片段
變量引用名,保存函數(shù)返回值,以便復用

例如,

${__BeanShell(123*456)}:回56088。
${__BeanShell(source("function.bsh"))}:行在function.bsh中的腳本。

這里寫圖片描述

請記得為文本字符串及代表文本字符串的JMeter變量添加必要的引號。

__groovy

與beanshell類似,只是它執(zhí)行的是apache groovy腳本,并返回結(jié)果。
如果定義了屬性 “groovy.utilities”,屬性將會被腳本引擎加載,這樣就可以定義一些通用方法和變量。在bin目錄中有一個初始化文件的例子:utility.groovy
如下變量在腳本執(zhí)行前就已經(jīng)設(shè)置了。

  • log:函數(shù)BeanShell(*)的記錄器。

  • ctx:目前的JMeter Context變量。

  • vars:目前的JMeter變量。

  • props:JMeter屬性對象。

  • threadName:線程名(字符串)。

  • sampler:當前采樣器(如果存在)。

  • prev:前一個SamplrResult(如果存在)。

  • OUT:System.out

(*)意味著該變量在JMeter使用初始化文件之前就已經(jīng)設(shè)置了。其他變量在不同調(diào)用之間可能會發(fā)生變化。

AttributeDescriptionRequired
表達式groovy腳本片段
變量引用名,保存函數(shù)返回值,以便復用

例如

${__groovy(123*456)}
returns 56088
${__groovy("${var}".substring(0\,2))}

groovytest

請記得為文本字符串及代表文本字符串的JMeter變量添加必要的引號。

__split

函數(shù)__split會通過分隔符來拆分傳遞給它的字符串,并返回原始的字符串。如果分隔符緊挨在一起,那么函數(shù)就會以變量值的形式返回”?”。拆分出來的字符串,以變量${VAR_1}、${VAR_2}…以此類推的形式加以返回,變量的總數(shù)使用${VAR_n}。拖尾(只有分隔符即分隔符后面沒有值)的分隔符會被認為缺少一個變量,會返回”?”。另外,為了更好地配合ForEach控制器,現(xiàn)在__split會刪除第一個不用的變量(由前一次分隔符所設(shè)置)。比如

例如,在測試計劃中定義變量VAR=”a||c|”:

${__split(\${VAR},VAR),|} 

這里寫圖片描述

AttributeDescriptionRequired
字符串被操作的字符串
變量引用名,保存函數(shù)返回值,以便復用
分隔符默認是逗號分隔

__XPath

函數(shù)__XPath讀取XML文件,并在文件中尋找與指定XPath相匹配的地方。每調(diào)用函數(shù)一次,就會返回下一個匹配項。到達文件末尾后,會從頭開始。如果沒有匹配的節(jié)點,那么函數(shù)會返回空字符串,另外,還會向JMeter日志文件寫一條警告信息。

整個節(jié)點列表都會被保存在內(nèi)存之中。

例如:

${__XPath(/path/to/build.xml, //target/@name)} 

這會找到build.xml文件中的所有target節(jié)點,并返回下一個name屬性的內(nèi)容。

AttributeDescriptionRequired
xml文件需要解析的xml文件
xpathxpath表達式

?
從實驗的結(jié)果來看,好像只能取屬性值,對應nodes的值無法獲取,返回都是null;另外標準的xpath語法也不支持比如last()://title[last()]/@lang返回的是第一個而不是最后一個~ 希望來個高手賜教、解惑

funXpath
?

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>19.99</price>
</book>
<book>
  <title lang="cn">Learning XML</title>
  <price>29.95</price>
</book>
<book>
  <title lang="us">Harry Potter</title>
  <price>39.99</price>
</book>
<book>
  <title lang="last">Learning XML</title>
  <price>49.95</price>
</book>
</bookstore>

__setProperty

函數(shù)__setProperty用于設(shè)置JMeter屬性的值。函數(shù)的默認返回值是空字符串,因此該函數(shù)可以被用在任何地方,只要對函數(shù)本身調(diào)用是正確的。

通過將函數(shù)可選的第3個參數(shù)設(shè)置為”true”,函數(shù)就會返回屬性的原始值。

屬性對于JMeter是全局的,因此可以被用來在線程和線程組之間通信。

AttributeDescriptionRequired
屬性名需要修改的目標屬性
屬性值屬性更新值
true/false原屬性值是否返回

?
這里寫圖片描述

__time

使用指定的變量格式返回當前時間

AttributeDescriptionRequired
時間格式將格式傳遞給SimpleDateFormat。該函數(shù)支持各種縮寫別名。如果省略格式,函數(shù)返回從1970年到當前時間的毫秒數(shù)
變量引用名,保存函數(shù)返回值,以便復用

?
如果省略了格式字符串,函數(shù)返回從1970年到當前時間的毫秒數(shù)。其他情況下,當前時間會被轉(zhuǎn)成簡單日期格式。如果格式匹配 “/ddd”(ddd是十進制數(shù)),返回 從1970年的總毫秒數(shù)除以/ddd,包含如下形式:
YMD = yyyyMMdd。
HMS = HHmmss。
YMDHMS = yyyyMMdd-HHmmss。
USER1 = JMeter屬性time.USER1。
USER2 = JMeter屬性time.USER2。
這里寫圖片描述
用戶可以通過修改JMeter屬性來改變默認格式,例如,time.YMD=yyMMdd。

這里寫圖片描述

__jexl2

函數(shù)_jexl可以用于執(zhí)行通用JEXL表達式,并返回執(zhí)行結(jié)果。感興趣的讀者可以從下面這兩個網(wǎng)頁鏈接獲取更多關(guān)于JEXL的信息。

AttributeDescriptionRequired
表達式要執(zhí)行的表達式
變量引用名,保存函數(shù)返回值,以便復用

如下變量可以通過腳本進行訪問。

  • log:函數(shù)記錄器。

  • ctx:JMeterContext對象。

  • vars:JMeterVariables對象。

  • props:JMeter屬性對象。

  • threadName:字符串包含當前線程名稱 (在2.3.2 版本中它被誤寫為”theadName”)。

  • sampler:當前的采樣器對象(如果存在)。

  • sampleResult:前面的采樣結(jié)果對象(如果存在)。

  • OUT - System.out,例如 OUT.println(“message”)。

JEXL可以基于它們來創(chuàng)建類,或者調(diào)用方法,例如:

Systemclass=log.class.forName("java.lang.System");  
now=Systemclass.currentTimeMillis(); 

需要注意的是,Web站點上的JEXL文檔錯誤地建議使用”div”做整數(shù)除法。事實上”div”和”/”都執(zhí)行普通除法。

i= 5 / 2;
i.intValue(); // or use i.longValue()

JMeter 允許在表達式中包含復雜的語句。

這里寫圖片描述

__jexl3

詳見 __jexl2

Jmeter函數(shù)和變量(一) http://blog.csdn.net/yue530tomtom/article/details/76651040
Jmeter函數(shù)和變量(二) http://blog.csdn.net/yue530tomtom/article/details/77456506
Jmeter函數(shù)和變量(三) http://blog.csdn.net/yue530tomtom/article/details/77533426
Jmeter函數(shù)和變量(四) http://blog.csdn.net/yue530tomtom/article/details/77573247

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多