日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于Jmeter中的函数和变量用法

發(fā)布時(shí)間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Jmeter中的函数和变量用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以下內(nèi)容來自官方頁(yè)面,鏈接:Apache JMeter - User's Manual: Functions and Variables

github

20. 函數(shù)和變量

JMeter 函數(shù)是可以填充測(cè)試樹中任何采樣器或其他元素的字段的特殊值。函數(shù)調(diào)用如下所示:

${__functionName(var1,var2,var3)}

其中“__functionName”與函數(shù)的名稱匹配。
括號(hào)括住發(fā)送給函數(shù)的參數(shù),例如${__time(YMD)}?實(shí)際參數(shù)因函數(shù)而異。不需要參數(shù)的函數(shù)可以省略括號(hào),例如${__threadNum}

如果函數(shù)參數(shù)包含逗號(hào),那么一定要用“?\?”轉(zhuǎn)義,否則JMeter會(huì)將其視為參數(shù)分隔符。例如:

<span style="color:#000000"><span style="color:orange">${__time(EEE\, d MMM yyyy)} </span></span> 如果逗號(hào)未轉(zhuǎn)義 - 例如${__javaScript(Math.max(2,5))}?- 您將收到如下錯(cuò)誤: <span style="color:#000000"><span style="color:orange">錯(cuò)誤 - jmeter.functions.JavaScript:錯(cuò)誤處理 Javascript:[Math.max(2] org.mozilla.javascript.EvaluatorException: missing) 在參數(shù)列表 (<cmd>#1) 之后</span></span> 這是因?yàn)樽址?Math.max(2,5)?”被視為 __javascript 函數(shù)的兩個(gè)參數(shù):
Math.max(25)
其他錯(cuò)誤消息是可能的。

變量引用如下:

${變量}

如果引用了未定義的函數(shù)或變量,JMeter 不會(huì)報(bào)告/記錄錯(cuò)誤 - 引用原樣返回。例如,如果UNDEF未定義為變量,則 ${UNDEF} 的值為$?{UNDEF}。?變量、函數(shù)(和屬性)都區(qū)分大小寫。?JMeter 在使用前會(huì)從變量名中刪除空格,例如?${__Random(1,63, LOTTERY )}將使用變量“?LOTTERY?”而不是“??LOTTERY??”。

屬性與變量不同。變量是線程本地的;屬性對(duì)所有線程都是通用的,需要使用__P__property函數(shù)來引用。 在Windows 路徑的變量之前?使用\時(shí),例如C:\test\${test},請(qǐng)確保轉(zhuǎn)義\?否則 JMeter 不會(huì)解釋變量,例如:?C:\\test\\${test}
或者,只需使用/代替路徑分隔符 - 例如C:/test/${test}?- Windows JVM 將根據(jù)需要轉(zhuǎn)換分隔符。

功能列表,松散地分組為類型。

功能類型姓名評(píng)論自從
信息線程數(shù)獲取線程號(hào)1.X
信息線程組名獲取線程組名4.1
信息采樣器名稱獲取采樣器名稱(標(biāo)簽)2.5
信息機(jī)器IP獲取本機(jī)IP地址2.6
信息機(jī)器名獲取本地機(jī)器名1.X
信息時(shí)間以各種格式返回當(dāng)前時(shí)間2.2
信息時(shí)移返回各種格式的日期,并添加指定的秒數(shù)/分鐘數(shù)/小時(shí)數(shù)/天數(shù)3.3
信息日志記錄(或顯示)消息(并返回值)2.2
信息登錄記錄(或顯示)一條消息(空返回值)2.2
輸入字符串從文件從文件中讀取一行1.9
輸入文件到字符串讀取整個(gè)文件2.4
輸入CSV讀取從 CSV 分隔文件讀取1.9
輸入XPath使用 XPath 表達(dá)式從文件中讀取2.0.3
輸入字符串到文件將字符串寫入文件5.2
計(jì)算柜臺(tái)生成一個(gè)遞增的數(shù)字1.X
格式化日期時(shí)間轉(zhuǎn)換將日期或時(shí)間從源格式轉(zhuǎn)換為目標(biāo)格式4.0
計(jì)算消化生成摘要(SHA-1、SHA-256、MD5...)4.0
計(jì)算整數(shù)添加整數(shù)1.8.1
計(jì)算長(zhǎng)和添加長(zhǎng)數(shù)字2.3.2
計(jì)算隨機(jī)的生成一個(gè)隨機(jī)數(shù)1.9
計(jì)算隨機(jī)日期在特定日期范圍內(nèi)生成隨機(jī)日期3.3
計(jì)算RandomFromMultipleVars從由|分隔的一組變量的值中提取一個(gè)元素3.1
計(jì)算隨機(jī)字符串生成隨機(jī)字符串2.6
計(jì)算UUID生成隨機(jī)類型 4 UUID2.9
腳本時(shí)髦的運(yùn)行 Apache Groovy 腳本3.1
腳本豆殼運(yùn)行 BeanShell 腳本1.X
腳本腳本處理 JavaScript (Nashorn)1.9
腳本jexl2評(píng)估 Commons Jexl2 表達(dá)式jexl2(2.1.1)
腳本jexl3評(píng)估 Commons Jexl3 表達(dá)式jexl3 (3.0)
特性isPropDefined測(cè)試屬性是否存在4.0
特性財(cái)產(chǎn)讀取屬性2.0
特性讀取屬性(速記方法)2.0
特性設(shè)置屬性設(shè)置 JMeter 屬性2.1
變量分裂將字符串拆分為變量2.0.2
變量評(píng)估計(jì)算變量表達(dá)式2.3.1
變量評(píng)估變量計(jì)算存儲(chǔ)在變量中的表達(dá)式2.3.1
特性isVarDefined測(cè)試變量是否存在4.0
變量評(píng)估變量名2.3RC3
細(xì)繩字符從數(shù)字列表中生成 Unicode 字符值2.3.3
細(xì)繩變更案例改變大小寫遵循不同的模式4.0
細(xì)繩轉(zhuǎn)義HTML使用 HTML 編碼對(duì)字符串進(jìn)行編碼2.3.3
細(xì)繩escapeOroRegexpChars引用 ORO 正則表達(dá)式使用的元字符2.9
細(xì)繩逃逸Xml使用 XML 編碼對(duì)字符串進(jìn)行編碼3.2
細(xì)繩正則表達(dá)式函數(shù)使用正則表達(dá)式解析先前的響應(yīng)1.X
細(xì)繩逃逸處理包含 Java 轉(zhuǎn)義的字符串(例如 \n & \t)2.3.3
細(xì)繩轉(zhuǎn)義HTML解碼 HTML 編碼的字符串2.3.3
細(xì)繩網(wǎng)址解碼解碼 application/x-www-form-urlencoded 字符串2.10
細(xì)繩網(wǎng)址代碼將字符串編碼為 application/x-www-form-urlencoded 字符串2.10
細(xì)繩測(cè)試計(jì)劃名稱返回當(dāng)前測(cè)試計(jì)劃的名稱2.6

20.1 函數(shù)能做什么

有兩種函數(shù):用戶定義的靜態(tài)值(或變量)和內(nèi)置函數(shù)。
用戶定義的靜態(tài)值允許用戶定義在編譯測(cè)試樹并提交運(yùn)行時(shí)用它們的靜態(tài)值替換的變量。此替換在測(cè)試運(yùn)行開始時(shí)發(fā)生一次。這可用于替換所有 HTTP 請(qǐng)求的 DOMAIN 字段,例如 - 使更改測(cè)試以針對(duì)具有相同測(cè)試的不同服務(wù)器變得簡(jiǎn)單。

請(qǐng)注意,變量當(dāng)前不能嵌套;即${Var${N}}不起作用。__V?(變量)函數(shù)可用于執(zhí)行此操作:$?{__V(Var${N})}。您也可以使用${__BeanShell(vars.get("Var${N}")}

這種類型的替換在沒有功能的情況下是可能的,但不太方便且不太直觀。它要求用戶創(chuàng)建默認(rèn)配置元素來填充采樣器的空白值。變量允許僅替換任何給定值的一部分,而不僅僅是填充空白值。

使用內(nèi)置函數(shù),用戶可以在運(yùn)行時(shí)根據(jù)以前的響應(yīng)數(shù)據(jù)、函數(shù)所在的線程、時(shí)間和許多其他來源計(jì)算新值。這些值是在整個(gè)測(cè)試過程中為每個(gè)請(qǐng)求生成的。

函數(shù)在線程之間共享。測(cè)試計(jì)劃中每次出現(xiàn)的函數(shù)調(diào)用都由單獨(dú)的函數(shù)實(shí)例處理。

20.2 函數(shù)和變量可以用在什么地方?

函數(shù)和變量可以寫入任何測(cè)試組件的任何字段(除了 TestPlan - 見下文)。某些字段不允許使用隨機(jī)字符串,因?yàn)樗鼈冃枰獢?shù)字,因此不會(huì)接受函數(shù)。但是,大多數(shù)字段都允許使用函數(shù)。

測(cè)試計(jì)劃中使用的功能有一些限制。JMeter線程變量在處理函數(shù)的時(shí)候還沒有完全設(shè)置好,所以作為參數(shù)傳遞的變量名不會(huì)設(shè)置,變量引用也不起作用,所以split()regex()以及變量求值函數(shù)都不會(huì)不工作。threadNum?()函數(shù)不起作用(并且在測(cè)試計(jì)劃級(jí)別沒有意義)。以下功能在測(cè)試計(jì)劃上應(yīng)該可以正常工作:

  • 整數(shù)
  • 長(zhǎng)和
  • 機(jī)器名
  • 豆殼
  • 時(shí)髦的
  • 腳本
  • jexl2/jexl3
  • 隨機(jī)的
  • 時(shí)間
  • 屬性函數(shù)
  • 日志功能

配置元素由單獨(dú)的線程處理。因此,諸如__threadNum之類的函數(shù)在用戶定義變量等元素中無法正常工作。另請(qǐng)注意,UDV 元素中定義的變量在處理完該元素后才可用。

在 SQL 代碼(等)中使用變量/函數(shù)引用時(shí),請(qǐng)記住為文本字符串包括任何必要的引號(hào),即使用 <span style="color:#000000"><span style="color:orange">從 name='${VAR}' 的表中選擇項(xiàng)目 </span></span> 不是 <span style="color:#000000"><span style="color:orange">從 name=${VAR} 的表中選擇項(xiàng)目 </span></span> (除非VAR本身包含引號(hào))

20.3 如何引用變量和函數(shù)

引用測(cè)試元素中的變量是通過用'?${?'和'?}?'將變量名括起來來完成的。

函數(shù)的引用方式相同,但按照慣例,函數(shù)的名稱以“ __?”開頭,以避免與用戶值名稱*沖突。有些函數(shù)需要參數(shù)來配置它們,這些參數(shù)放在括號(hào)中,以逗號(hào)分隔。如果函數(shù)沒有參數(shù),括號(hào)可以省略。

本身包含逗號(hào)的參數(shù)值應(yīng)根據(jù)需要進(jìn)行轉(zhuǎn)義。如果您需要在參數(shù)值中包含逗號(hào),請(qǐng)將其轉(zhuǎn)義,如下所示:'?\,?'。?例如,這適用于腳本函數(shù) - Javascript、Beanshell、Jexl、groovy - 有必要在腳本方法調(diào)用中轉(zhuǎn)義任何可能需要的逗號(hào) - 例如

${__BeanShell(vars.put("name"\,"value"))}

或者,您可以將腳本定義為變量,例如在測(cè)試計(jì)劃中:

腳本 vars.put("name","value") 然后可以按如下方式引用該腳本: ${__BeanShell(${SCRIPT})} 不需要在SCRIPT變量中轉(zhuǎn)義逗號(hào),因?yàn)樵趯⒆兞刻鎿Q為其值之前會(huì)解析函數(shù)調(diào)用。這與 JSR223 或 BeanShell 采樣器配合使用效果很好,因?yàn)樗鼈兛捎糜跍y(cè)試 Javascript、Jexl 和 BeanShell 腳本。

函數(shù)可以引用變量和其他函數(shù),例如?${__XPath(${__P(xpath.file),${XPATH})}?將使用屬性“?xpath.file?”作為文件名,變量XPATH的內(nèi)容為要搜索的表達(dá)式。

JMeter 提供了一個(gè)工具來幫助您為各種內(nèi)置函數(shù)構(gòu)建函數(shù)調(diào)用,然后您可以復(fù)制粘貼。它不會(huì)自動(dòng)為您轉(zhuǎn)義值,因?yàn)楹瘮?shù)可以是其他函數(shù)的參數(shù),并且您應(yīng)該只將您想要作為文字的值轉(zhuǎn)義。

如果字符串包含反斜杠('?\ ')并且還包含函數(shù)或變量引用,則如果反斜杠出現(xiàn)在'?$?'或'?,?'或'?\?'之前,則將刪除反斜杠。此行為對(duì)于允許包含逗號(hào)或字符串${的嵌套函數(shù)是必要的。如果字符串不包含函數(shù)或變量引用,則不會(huì)刪除 '?$?' 或 '??' 或 '?\?'之前的反斜杠。

可以使用__logn()函數(shù)報(bào)告變量或函數(shù)的值。定義變量后,__logn()函數(shù)引用可以在測(cè)試計(jì)劃中的任何地方使用。或者,Java 請(qǐng)求采樣器可用于創(chuàng)建包含變量引用的示例;輸出將顯示在適當(dāng)?shù)膫陕犉髦小U?qǐng)注意,有一個(gè)調(diào)試采樣器?可用于在樹視圖偵聽器中顯示變量的值等。

*如果你定義了一個(gè)與內(nèi)置函數(shù)同名的用戶定義的靜態(tài)變量,你的靜態(tài)變量將覆蓋內(nèi)置函數(shù)。

20.4 函數(shù)助手對(duì)話框

函數(shù)助手對(duì)話框可從 JMeter 的工具菜單中獲得。

函數(shù)助手對(duì)話框

使用函數(shù)助手,您可以從下拉列表中選擇一個(gè)函數(shù),并為其參數(shù)賦值。表中的左列提供了參數(shù)的簡(jiǎn)要描述,右列是您為該參數(shù)寫入值的位置。不同的函數(shù)采用不同的參數(shù)。

完成此操作后,單擊“生成”按鈕,并生成適當(dāng)?shù)淖址┠鷱?fù)制粘貼到您喜歡的任何地方的測(cè)試計(jì)劃中。

?

20.5 功能

__regex函數(shù)

Regex 函數(shù)用于使用任何正則表達(dá)式(由用戶提供)解析先前的響應(yīng)(或變量的值)。該函數(shù)返回填充了變量值的模板字符串。

__regexFunction可以存儲(chǔ)值以供將來使用。在第六個(gè)參數(shù)中,您可以指定一個(gè)引用名稱。執(zhí)行此函數(shù)后,稍后可以使用用戶定義值的語法檢索相同的值。例如,如果您輸入“?refName?”作為第六個(gè)參數(shù),您將能夠使用:

  • ${refName}引用此函數(shù)解析的第二個(gè)參數(shù)(“替換字符串的模板”)的計(jì)算結(jié)果
  • ${refName_g0}引用此函數(shù)解析的整個(gè)匹配項(xiàng)。
  • ${refName_g1}引用此函數(shù)解析的第一個(gè)組。
  • ${refName_g#}引用此函數(shù)解析的第 n個(gè)組。
  • ${refName_matchNr}引用此函數(shù)找到的組數(shù)。
如果使用分布式測(cè)試,請(qǐng)確保切換模式(請(qǐng)參閱jmeter.properties),以免它不是剝離模式,請(qǐng)參閱?錯(cuò)誤 56376

參數(shù)

屬性 ? 描述 ? 必需的 第一個(gè)論點(diǎn) ? 第一個(gè)參數(shù)是應(yīng)用于響應(yīng)數(shù)據(jù)的正則表達(dá)式。它將抓取所有匹配項(xiàng)。您希望在模板字符串中使用此表達(dá)式的任何部分,請(qǐng)務(wù)必用括號(hào)括起來。示例:?<a href="(.*)">。這將獲取鏈接的值并將其存儲(chǔ)為第一組(只有 1 組)。另一個(gè)例子:<input type="hidden" name="(.*)" value="(.*)">。這將獲取名稱作為第一組,并將值作為第二組。這些值可以在您的模板字符串中使用 ? 是的 第二個(gè)論點(diǎn) ? 這是將在運(yùn)行時(shí)替換函數(shù)的模板字符串。要引用正則表達(dá)式中捕獲的組,請(qǐng)使用語法:?$[group_number]$。即:$1$$2$。您的模板可以是任何字符串。 ? 是的 第三個(gè)論點(diǎn) ? 第三個(gè)參數(shù)告訴 JMeter 使用哪個(gè)匹配。您的正則表達(dá)式可能會(huì)找到許多匹配項(xiàng)。你有四個(gè)選擇:
  • 一個(gè)整數(shù) - 告訴 JMeter 使用該匹配。'?1?' 表示找到的第一個(gè)匹配項(xiàng),'?2?' 表示第二個(gè)匹配項(xiàng),依此類推
  • RAND?- 告訴 JMeter 隨機(jī)選擇一個(gè)匹配項(xiàng)。
  • ALL?- 告訴 JMeter 使用所有匹配項(xiàng),并為每個(gè)匹配項(xiàng)創(chuàng)建一個(gè)模板字符串,然后將它們?nèi)扛郊釉谝黄稹_@個(gè)選項(xiàng)很少使用。
  • 一個(gè)介于 0 和 1 之間的浮點(diǎn)數(shù) - 告訴 JMeter 使用以下公式找到第 X個(gè)匹配項(xiàng):(number_of_matches_found * float_number) 四舍五入到最接近的整數(shù)。
? 不,默認(rèn)=1 第四個(gè)論點(diǎn) ? 如果為上述參數(shù)值選擇了“?ALL?”,則該參數(shù)將插入到模板值的每個(gè)附加副本之間。 ? 第五論點(diǎn) ? 如果未找到匹配項(xiàng),則返回默認(rèn)值 ? 第六個(gè)論點(diǎn) ? 用于重用此函數(shù)解析的值的引用名稱。
存儲(chǔ)的值是${refName}(替換模板字符串)和${refName_g#},其中“?#?”是正則表達(dá)式中的組號(hào)(“?0?”可用于引用整個(gè)匹配項(xiàng))。
? 第七個(gè)論點(diǎn) ? 輸入變量名。如果指定,則將變量的值用作輸入,而不是使用先前的樣本結(jié)果。 ? ^

__柜臺(tái)

計(jì)數(shù)器每次調(diào)用時(shí)都會(huì)生成一個(gè)新數(shù)字,從 1 開始,每次遞增 +1。計(jì)數(shù)器可以配置為將每個(gè)模擬用戶的值分開,或者為所有用戶使用相同的計(jì)數(shù)器。如果每個(gè)用戶的值分別遞增,這就像計(jì)算測(cè)試計(jì)劃的迭代次數(shù)。全局計(jì)數(shù)器就像計(jì)算該請(qǐng)求運(yùn)行了多少次。

計(jì)數(shù)器使用一個(gè)整數(shù)變量來保存計(jì)數(shù),因此它的最大值為 2,147,483,647。

計(jì)數(shù)器函數(shù)實(shí)例是完全獨(dú)立的。全局計(jì)數(shù)器 - “?FALSE?” - 由每個(gè)計(jì)數(shù)器實(shí)例單獨(dú)維護(hù)。

同一迭代中的多個(gè)__counter函數(shù)調(diào)用不會(huì)進(jìn)一步增加該值。
如果您想要為每個(gè)樣本增加一個(gè)計(jì)數(shù),請(qǐng)使用預(yù)處理器中的函數(shù),例如User Parameters。

參數(shù)

屬性 ? 描述 ? 必需的 第一個(gè)論點(diǎn) ? 如果您希望每個(gè)模擬用戶的計(jì)數(shù)器保持獨(dú)立并與其他用戶分開,則為?TRUE 。全局計(jì)數(shù)器為FALSE ? 是的 第二個(gè)論點(diǎn) ? 用于重用此函數(shù)創(chuàng)建的值的引用名稱。
存儲(chǔ)值的格式為 ${refName}。這允許您保留一個(gè)計(jì)數(shù)器并在多個(gè)位置引用其值。
? ^

__threadNum

線程號(hào)函數(shù)只是返回當(dāng)前正在執(zhí)行的線程號(hào)。這些數(shù)字僅相對(duì)于它們的 ThreadGroup 是局部唯一的,這意味著從這個(gè)函數(shù)的角度來看,一個(gè)線程組中的線程 #1 與另一個(gè)線程組中的線程 #1 無法區(qū)分。

該函數(shù)返回一個(gè)介于 1 和最大運(yùn)行線程數(shù)之間的數(shù)字。請(qǐng)注意,如果您將 JSR223 代碼與JMeterContext對(duì)象(ctx變量)一起使用,則以下代碼將返回一個(gè)介于零和(最大運(yùn)行線程數(shù)減一)之間的數(shù)字 <span style="color:#000000"><span style="color:orange">ctx.getThreadNum()</span></span>

此函數(shù)沒有參數(shù)。

使用示例:

<span style="color:#000000"><span style="color:orange">${__threadNum}</span></span> 返回一個(gè)介于 1 和包含線程組中配置的最大運(yùn)行線程數(shù)之間的數(shù)字

此功能不適用于任何配置元素(例如用戶定義的變量),因?yàn)樗鼈兪菑膯为?dú)的線程運(yùn)行的。在測(cè)試計(jì)劃中使用它也沒有意義。 ^

__threadGroupName

線程組名稱函數(shù)只返回正在執(zhí)行的線程組的名稱。

此函數(shù)沒有參數(shù)。

使用示例:

<span style="color:#000000"><span style="color:orange">${__threadGroupName}</span></span>

此功能不適用于任何配置元素(例如用戶定義的變量),因?yàn)樗鼈兪菑膯为?dú)的線程運(yùn)行的。在測(cè)試計(jì)劃中使用它也沒有意義。 ^

__intSum

intSum 函數(shù)可用于計(jì)算兩個(gè)或多個(gè)整數(shù)值的總和。

引用名稱是可選的,但它不能是有效的整數(shù)。

參數(shù)

屬性 ? 描述 ? 必需的 第一個(gè)論點(diǎn) ? 第一個(gè) int 值。 ? 是的 第二個(gè)論點(diǎn) ? 第二個(gè) int 值。 ? 是的 第 n 個(gè)參數(shù) ? 第 n個(gè)int 值。 ? 最后一個(gè)論點(diǎn) ? 用于重用此函數(shù)計(jì)算的值的引用名稱。如果指定,引用名稱必須至少包含一個(gè)非數(shù)字字符,否則它將被視為要添加的另一個(gè) int 值。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__intSum(2,5,MYVAR)}</span></span> 將返回 7 (2+5) 并將結(jié)果存儲(chǔ)在 MYVAR 變量中。所以${MYVAR}將等于 7。
? <span style="color:#000000"><span style="color:orange">${__intSum(2,5,7)}</span></span> 將返回 14 (2+5+7) 并將結(jié)果存儲(chǔ)在 MYVAR 變量中。
? <span style="color:#000000"><span style="color:orange">${__intSum(1,2,5,${MYVAR})}</span></span> 如果 MYVAR 值等于 8,將返回 16, 1+2+5+${MYVAR})

^

__longSum

longSum 函數(shù)可用于計(jì)算兩個(gè)或多個(gè) long 值的總和,只要您知道您的值不在 -2147483648 到 2147483647 的區(qū)間內(nèi),請(qǐng)使用它而不是 __intSum。

參數(shù)

屬性 ? 描述 ? 必需的 第一個(gè)論點(diǎn) ? 第一個(gè)長(zhǎng)值。 ? 是的 第二個(gè)論點(diǎn) ? 第二個(gè)長(zhǎng)值。 ? 是的 第 n 個(gè)參數(shù) ? 第 n個(gè)long 值。 ? 最后一個(gè)論點(diǎn) ? 用于重用此函數(shù)計(jì)算的值的引用名稱。如果指定,引用名稱必須包含至少一個(gè)非數(shù)字字符,否則將被視為要添加的另一個(gè)長(zhǎng)值。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__longSum(2,5,MYVAR)}</span></span> 將返回 7 (2+5) 并將結(jié)果存儲(chǔ)在 MYVAR 變量中。所以${MYVAR}將等于 7。
? <span style="color:#000000"><span style="color:orange">${__longSum(2,5,7)}</span></span> 將返回 14 (2+5+7) 并將結(jié)果存儲(chǔ)在 MYVAR 變量中。
? <span style="color:#000000"><span style="color:orange">${__longSum(1,2,5,${MYVAR})}</span></span> 如果 MYVAR 值等于 8,將返回 16, 1+2+5+${MYVAR})

^

__StringFromFile

StringFromFile 函數(shù)可用于從文本文件中讀取字符串。這對(duì)于運(yùn)行需要大量可變數(shù)據(jù)的測(cè)試很有用。例如,在測(cè)試銀行應(yīng)用程序時(shí),可能需要 100 或 1000 個(gè)不同的帳號(hào)。

另請(qǐng)參閱?可能更易于使用的CSV 數(shù)據(jù)集配置測(cè)試元素。但是,目前不支持多個(gè)輸入文件。

每次調(diào)用它都會(huì)從文件中讀取下一行。所有線程共享同一個(gè)實(shí)例,因此不同的線程將得到不同的行。當(dāng)?shù)竭_(dá)文件末尾時(shí),它將重新從頭開始讀取,除非已達(dá)到最大循環(huán)計(jì)數(shù)。如果測(cè)試腳本中有多個(gè)對(duì)該函數(shù)的引用,則每個(gè)引用都將獨(dú)立打開文件,即使文件名相同。[如果要在其他地方再次使用該值,請(qǐng)為每個(gè)函數(shù)調(diào)用使用不同的變量名。]

函數(shù)實(shí)例在線程之間共享,并且文件由恰好需要下一行輸入的任何線程(重新)打開,因此使用threadNumber作為文件名的一部分將導(dǎo)致不可預(yù)測(cè)的行為。

如果打開或讀取文件發(fā)生錯(cuò)誤,則函數(shù)返回字符串“?**ERR**?”

參數(shù)

屬性 ? 描述 ? 必需的 文件名 ? 文件名的路徑。(路徑可以相對(duì)于 JMeter 啟動(dòng)目錄)如果使用可選的序列號(hào),路徑名應(yīng)該適合傳遞給 DecimalFormat。請(qǐng)參閱下面的示例。 ? 是的 變量名 ? 引用名稱 -?refName?- 用于重用此函數(shù)創(chuàng)建的值。存儲(chǔ)值的格式為 ${refName}。默認(rèn)為“?StringFromFile_?”。 ? 起始序號(hào) ? 初始序列號(hào)(如果省略,則將結(jié)束序列號(hào)視為循環(huán)計(jì)數(shù)) ? 結(jié)束序號(hào) ? 最終序號(hào)(如果省略,序號(hào)可以無限增加) ?

打開或重新打開文件時(shí)解析文件名參數(shù)。

每次執(zhí)行函數(shù)時(shí)都會(huì)解析引用名稱參數(shù)(如果提供)。

使用序列號(hào):

使用可選序列號(hào)時(shí),路徑名用作java.text.DecimalFormat的格式字符串。當(dāng)前序列號(hào)作為唯一參數(shù)傳入。如果未指定可選的起始編號(hào),則按原樣使用路徑名。有用的格式化序列是:

#

插入數(shù)字,沒有前導(dǎo)零或空格

000

如有必要,將壓縮后的數(shù)字插入前導(dǎo)零的三位數(shù)字

格式字符串的使用 以下是一些格式字符串以及它們將生成的相應(yīng)序列。

pin#'.'dat

將生成不帶前導(dǎo)零的數(shù)字并將點(diǎn)按字面意思
視為 pin1.dat、...、pin9.datpin10.dat、...、pin9999.dat

pin000'.'dat

將在保留點(diǎn)的同時(shí)生成前導(dǎo)零。當(dāng)數(shù)字開始有更多數(shù)字時(shí),該格式建議的這三個(gè)數(shù)字,序列將使用更多數(shù)字,如
pin001.dat、...?pin099.dat、...、pin999.dat、...、pin9999.dat

pin'.'dat#

將在保留點(diǎn)的同時(shí)附加不帶前導(dǎo)零的數(shù)字并生成
pin.dat1?, ...,?pin.dat9?, ...,?pin.dat999

如果需要的數(shù)字多于格式化字符,則數(shù)字將根據(jù)需要進(jìn)行擴(kuò)展。
為防止格式字符被解釋,請(qǐng)將其括在單引號(hào)中。請(qǐng)注意,“?.?”是一個(gè)格式化字符,必須用單引號(hào)括起來?(盡管#.000.在小數(shù)點(diǎn)也是“?.?”的語言環(huán)境中按預(yù)期工作)
在其他語言環(huán)境中(例如fr),小數(shù)點(diǎn)是“?,?”——這意味著“?#.?”變成了“?nnn,?”。有關(guān)完整詳細(xì)信息,
請(qǐng)參閱DecimalFormat的文檔。
如果路徑名不包含任何特殊格式字符,則將當(dāng)前序號(hào)附加到名稱后,否則將根據(jù)格式說明插入序號(hào)。
如果省略了開始序號(hào),而指定了結(jié)束序號(hào),則序號(hào)被解釋為循環(huán)計(jì)數(shù),并且文件將最多使用“?end?”次。在這種情況下,文件名未格式化。
${__StringFromFile(PIN#'.'DAT,,1,2)}?- 讀取PIN1.DAT?,?PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)}?- 讀取PIN.DAT兩次
注意 "?.?" 在上面的PIN.DAT中應(yīng)該不被引用。在這種情況下,起始編號(hào)被省略,因此文件名完全按原樣使用。

^

__機(jī)器名

machineName 函數(shù)返回本地主機(jī)名。這使用 Java 方法InetAddress.getLocalHost()并將其傳遞給getHostName()

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__machineName()}</span></span> 將返回機(jī)器的主機(jī)名
? <span style="color:#000000"><span style="color:orange">${__machineName}</span></span> 將返回機(jī)器的主機(jī)名

^

__機(jī)器IP

machineIP 函數(shù)返回本地 IP 地址。這使用 Java 方法InetAddress.getLocalHost()并將其傳遞給getHostAddress()

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__machineIP()}</span></span> 將返回機(jī)器的 IP 地址
? <span style="color:#000000"><span style="color:orange">${__machineIP}</span></span> 將返回機(jī)器的 IP 地址

^

__javaScript

javaScript 函數(shù)執(zhí)行一段 JavaScript(不是 Java!)代碼并返回其值

JMeter Javascript 函數(shù)調(diào)用一個(gè)獨(dú)立的 JavaScript 解釋器。Javascript用作腳本語言,因此您可以進(jìn)行計(jì)算等。

javaScript 不是用于 JMeter 性能的最佳腳本語言。如果您的計(jì)劃需要大量線程,建議使用__jexl3__groovy函數(shù)。 對(duì)于 Nashorn 引擎,請(qǐng)參閱Java 平臺(tái)標(biāo)準(zhǔn)版 Nashorn 用戶指南。
對(duì)于 Rhino 引擎,請(qǐng)參閱Mozilla Rhino 概述

以下變量可用于腳本:

  • log?-函數(shù)的Logger
  • ctx?-?JMeterContext對(duì)象
  • vars?-?JMeterVariables對(duì)象
  • threadName?- 包含當(dāng)前線程名稱的字符串
  • sampler?- 當(dāng)前的Sampler對(duì)象(如果有)
  • sampleResult?- 以前的 SampleResult對(duì)象(如果有)
  • props?- JMeterProperties(類java.util.Properties)對(duì)象

Rhinoscript 允許通過其 Packages 對(duì)象訪問靜態(tài)方法。請(qǐng)參閱腳本 Java文檔。例如,可以訪問 JMeterContextService 靜態(tài)方法:?Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter 不是瀏覽器,不會(huì)解釋下載頁(yè)面中的 JavaScript。

參數(shù)

屬性 ? 描述 ? 必需的 表達(dá) ? 要執(zhí)行的 JavaScript 表達(dá)式。例如:
  • new Date()?- 返回當(dāng)前日期和時(shí)間
  • Math.floor(Math.random()*(${maxRandom}+1)) -?0和變量maxRandom?之間的隨機(jī)數(shù)
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1))?- 變量minRandommaxRandom之間的隨機(jī)數(shù)
  • "${VAR}"=="abcd"
? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ? 請(qǐng)記住為文本字符串和 JMeter 變量添加任何必要的引號(hào)。另外,如果表達(dá)式有逗號(hào),請(qǐng)確保將它們轉(zhuǎn)義。例如在: <span style="color:#000000"><span style="color:orange">${__javaScript('${sp}'.slice(7\,99999))} </span></span> 7?后的逗號(hào)被轉(zhuǎn)義。

例子:

<span style="color:#000000"><span style="color:orange">${__javaScript(新日期())}</span></span> 將于2016 年 1 月 9 日星期六 16:22:15 GMT+0100 (CET)返回
? <span style="color:#000000"><span style="color:orange">${__javaScript(new Date(),MYDATE)}</span></span> 將返回Sat Jan 09 2016 16:22:15 GMT+0100 (CET)并將其存儲(chǔ)在變量MYDATE下
? <span style="color:#000000"><span style="color:orange">${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}</span></span> 將使用 maxRandom 變量,返回一個(gè)介于 0 和 maxRandom 之間的隨機(jī)值并將其存儲(chǔ)在 MYRESULT <span style="color:#000000"><span style="color:orange">${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}</span></span> 將使用maxRandomminRandom變量,返回maxRandomminRandom之間的隨機(jī)值并將其存儲(chǔ)在變量MYRESULT下 <span style="color:#000000"><span style="color:orange">${__javaScript("${VAR}"=="abcd",MYRESULT)}</span></span> VAR變量的值與abcd進(jìn)行比較,返回truefalse并將結(jié)果存儲(chǔ)在 MYRESULT

^

__隨機(jī)的

random 函數(shù)返回一個(gè)介于給定最小值和最大值之間的隨機(jī)數(shù)。

參數(shù)

屬性 ? 描述 ? 必需的 最小值 ? 一個(gè)號(hào)碼 ? 是的 最大值 ? 更大的數(shù)字 ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__隨機(jī)(0,10)}</span></span> 將返回 0 到 10 之間的隨機(jī)數(shù)
? <span style="color:#000000"><span style="color:orange">${__Random(0,10, MYVAR)}</span></span> 將返回 0 到 10 之間的隨機(jī)數(shù)并將其存儲(chǔ)在MYVAR中。${MYVAR}將包含隨機(jī)數(shù)

^

__隨機(jī)日期

RandomDate 函數(shù)返回一個(gè)介于給定開始日期和結(jié)束日期值之間的隨機(jī)日期。

參數(shù)

屬性 ? 描述 ? 必需的 時(shí)間格式 ? DateTimeFormatter 的格式字符串(默認(rèn)yyyy-MM-dd ? 開始日期 ? 開始日期,默認(rèn)是現(xiàn)在 ? 結(jié)束日期 ? 結(jié)束日期 ? 是的 用于格式的語言環(huán)境 ? 語言環(huán)境的字符串格式。語言代碼必須是小寫的。國(guó)家代碼必須是大寫的。分隔符必須是下劃線,例如en_EN。請(qǐng)參閱Java SE 7 Supported Locales。如果省略,默認(rèn)情況下該函數(shù)使用 Apache JMeter 語言環(huán)境之一。 ? 變量名 ? 要設(shè)置的變量的名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__RandomDate(,,2050-07-08,,)}</span></span> 將返回從現(xiàn)在到2050-07-08之間的隨機(jī)日期。例如2039-06-21
? <span style="color:#000000"><span style="color:orange">${__RandomDate(dd MM yyyy,,08 07 2050,,)}</span></span> 將返回具有自定義格式的隨機(jī)日期,例如04 03 2034

^

__隨機(jī)字符串

RandomString 函數(shù)使用要使用的字符中的字符返回長(zhǎng)度的隨機(jī)字符串。

參數(shù)

屬性 ? 描述 ? 必需的 長(zhǎng)度 ? 生成的字符串的數(shù)字長(zhǎng)度 ? 是的 使用的字符 ? 用于生成字符串的字符 ? 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__RandomString(5)}</span></span> 將返回一個(gè) 5 個(gè)字符的隨機(jī)字符串,該字符串是否可讀
? <span style="color:#000000"><span style="color:orange">${__RandomString(10,abcdefg)}</span></span> 將返回從abcdefg集合中挑選的 10 個(gè)字符的隨機(jī)字符串,例如cdbgdbeebdadbfeggfad,...
? <span style="color:#000000"><span style="color:orange">${__RandomString(6,a12zeczclk, MYVAR)}</span></span> 將返回從a12zeczclk集合中挑選的 6 個(gè)字符的隨機(jī)字符串并將結(jié)果存儲(chǔ)在MYVAR中,MYVAR將包含類似2z22akz11kce的字符串,...

^

__RandomFromMultipleVars

RandomFromMultipleVars 函數(shù)根據(jù)Source Variables提供的變量值返回一個(gè)隨機(jī)值。

變量可以是簡(jiǎn)單的或多值的,因?yàn)樗鼈兛梢杂梢韵绿崛∑魃?#xff1a;
  • 邊界提取器
  • 正則表達(dá)式提取器
  • CSS 選擇器提取器
  • JSON 提取器
  • XPath 提取器
  • XPath2 提取器
多值變量是在您為Match Numbers設(shè)置-1時(shí)提取的變量。這導(dǎo)致創(chuàng)建名為varName_matchNr的匹配編號(hào)變量,并為每個(gè)值創(chuàng)建變量varName_n,其中 n = 1、2、3 等。

參數(shù)

屬性 ? 描述 ? 必需的 源變量 ? 由|分隔的變量名?包含將用作隨機(jī)計(jì)算輸入的值 ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__RandomFromMultipleVars(val)}</span></span> 將根據(jù)變量 val 的內(nèi)容返回一個(gè)隨機(jī)字符串,同時(shí)考慮它們是否為多值
? <span style="color:#000000"><span style="color:orange">${__RandomFromMultipleVars(val1|val2)}</span></span> 將根據(jù)變量 val1 和 val2 的內(nèi)容返回一個(gè)隨機(jī)字符串,同時(shí)考慮它們是否為多值
? <span style="color:#000000"><span style="color:orange">${__RandomFromMultipleVars(val1|val2, MYVAR)}</span></span> 將根據(jù)變量 val1 和 val2 的內(nèi)容返回一個(gè)隨機(jī)字符串,同時(shí)考慮它們是否為多值,并將結(jié)果存儲(chǔ)在MYVAR

^

__UUID

UUID 函數(shù)返回一個(gè)偽隨機(jī)類型 4 通用唯一標(biāo)識(shí)符 (UUID)。

參數(shù)

屬性 ? 描述 ? 必需的

例子:

<span style="color:#000000"><span style="color:orange">${__UUID()}</span></span> 將返回此格式的 UUID:c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSV讀取

CSVRead 函數(shù)從 CSV 文件中返回一個(gè)字符串 (cf?StringFromFile?)

注意:JMeter 支持多個(gè)文件名。

在大多數(shù)情況下,較新的?CSV 數(shù)據(jù)集配置元素?更易于使用。

當(dāng)?shù)谝淮斡龅轿募麜r(shí),文件被打開并讀入一個(gè)內(nèi)部數(shù)組。如果檢測(cè)到空行,則將其視為文件結(jié)尾 - 這允許使用尾隨注釋。

對(duì)相同文件名的所有后續(xù)引用都使用相同的內(nèi)部數(shù)組。注意文件名大小寫對(duì)函數(shù)很重要,即使操作系統(tǒng)不關(guān)心,所以CSVRead(abc.txt,0)CSVRead(aBc.txt,0)將引用不同的內(nèi)部數(shù)組。

*ALIAS功能允許多次打開同一個(gè)文件,也允許使用更短的文件名?。

每個(gè)線程都有自己的內(nèi)部指針,指向文件數(shù)組中的當(dāng)前行。當(dāng)一個(gè)線程第一次引用該文件時(shí),它將被分配到數(shù)組中的下一個(gè)空閑行,因此每個(gè)線程將訪問與所有其他線程不同的行。[除非線程數(shù)多于數(shù)組中的行數(shù)。]

默認(rèn)情況下,該函數(shù)在每個(gè)逗號(hào)處拆分行。如果要輸入包含逗號(hào)的列,則需要通過設(shè)置屬性將分隔符更改為不出現(xiàn)在任何列數(shù)據(jù)中的字符:csvread.delimiter

參數(shù)

屬性 ? 描述 ? 必需的 文件名 ? 要從中讀取的文件(或*ALIAS ) ? 是的 列號(hào) ? 文件中的列號(hào)。?0?= 第一列,1?= 第二列,以此類推。“下一個(gè)” - 轉(zhuǎn)到文件的下一行。?*ALIAS?- 打開一個(gè)文件并將其分配給別名 ? 是的

例如,您可以如下設(shè)置一些變量:

  • COL1a?${__CSVRead(random.txt,0)}
  • COL2a?${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b?${__CSVRead(random.txt,0)}
  • COL2b?${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
這將從一行讀取兩列,從下一個(gè)可用行讀取兩列。如果所有變量都定義在同一個(gè)用戶參數(shù)預(yù)處理器上,那么這些行將是連續(xù)的。否則,不同的線程可能會(huì)抓取下一行。

該功能不適用于大文件,因?yàn)檎麄€(gè)文件都存儲(chǔ)在內(nèi)存中。對(duì)于較大的文件,請(qǐng)使用CSV 數(shù)據(jù)集配置元素?或StringFromFile。 ^

__財(cái)產(chǎn)

屬性函數(shù)返回 JMeter 屬性的值。如果找不到屬性值,并且沒有提供默認(rèn)值,則返回屬性名稱。提供默認(rèn)值時(shí),無需提供函數(shù)名稱 - 參數(shù)可以設(shè)置為 null,它將被忽略。

例如:

  • ${__property(user.dir)} -?user.dir的返回值
  • ${__property(user.dir,UDIR)} -?user.dir的返回值并保存在UDIR
  • ${__property(abcd,ABCD,atod)} - 屬性abcd的返回值(或“?atod?”,如果未定義)并保存在ABCD
  • ${__property(abcd,,atod)} - 屬性abcd的返回值(或“?atod?”,如果未定義)但不保存它

參數(shù)

屬性 ? 描述 ? 必需的 屬性名稱 ? 要檢索的屬性名稱。 ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ? 默認(rèn)值 ? 屬性的默認(rèn)值。 ? ^

__P

這是一個(gè)簡(jiǎn)化的屬性函數(shù),旨在與命令行上定義的屬性一起使用。與__property函數(shù)不同,沒有將值保存在變量中的選項(xiàng),如果沒有提供默認(rèn)值,則假定為 1。選擇 1 的值是因?yàn)樗鼘?duì)循環(huán)等常見測(cè)試變量有效,線程數(shù),斜升等。

例如:

定義屬性值:

<span style="color:#000000"><span style="color:orange">jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu </span></span> 獲取值:
${__P(group1.threads)}?- 返回group1.threads的值
${__P(group1.loops)} - 返回group1.loops?的值
${__P(hostname,www.dummy.org) }?-如果未定義 ,則返回屬性hostnamewww.dummy.org
在上面的示例中,第一個(gè)函數(shù)調(diào)用將返回7,第二個(gè)函數(shù)調(diào)用將返回1,最后一個(gè)將返回www.dummy.org?(除非這些屬性已定義別處!)

參數(shù)

屬性 ? 描述 ? 必需的 屬性名稱 ? 要檢索的屬性名稱。 ? 是的 默認(rèn)值 ? 屬性的默認(rèn)值。如果省略,默認(rèn)設(shè)置為“?1?”。 ? ^

__日志

log 函數(shù)記錄一條消息,并返回其輸入字符串

參數(shù)

屬性 ? 描述 ? 必需的 要記錄的字符串 ? 一個(gè)字符串 ? 是的 日志級(jí)別 ? OUTERRDEBUGINFO(默認(rèn)),WARNERROR ? 可拋出的文本 ? 如果非空,則創(chuàng)建一個(gè) Throwable 傳遞給記錄器 ? 評(píng)論 ? 如果存在,則顯示在字符串中。用于識(shí)別正在記錄的內(nèi)容。 ?

OUTERR日志級(jí)別名稱分別用于將輸出定向到System.outSystem.err。在這種情況下,輸出總是被打印出來——它不依賴于當(dāng)前的日志設(shè)置。

${__log(消息)}

寫入日志文件為“?......線程名稱:消息

${__log(消息,輸出)}

寫入控制臺(tái)窗口

${__log(${VAR},,,VAR=)}

寫入日志文件為“?……線程名稱 VAR=value?”

^

__logn

logn 函數(shù)記錄一條消息,并返回空字符串

參數(shù)

屬性 ? 描述 ? 必需的 要記錄的字符串 ? 一個(gè)字符串 ? 是的 日志級(jí)別 ? OUTERRDEBUGINFO(默認(rèn)),WARNERROR ? 可拋出的文本 ? 如果非空,則創(chuàng)建一個(gè) Throwable 傳遞給記錄器 ?

OUTERR日志級(jí)別名稱分別用于將輸出定向到System.outSystem.err。在這種情況下,輸出總是被打印出來——它不依賴于當(dāng)前的日志設(shè)置。

${__logn(VAR1=${VAR1},OUT)}

將變量的值寫入控制臺(tái)窗口

^

__豆殼

BeanShell 函數(shù)評(píng)估傳遞給它的腳本,并返回結(jié)果。

為了提高性能,最好使用__groovy函數(shù)

有關(guān)使用 BeanShell 的完整詳細(xì)信息,請(qǐng)參閱 BeanShell 網(wǎng)站BeanShell - Lightweight Scripting for Java

請(qǐng)注意,不同的解釋器用于測(cè)試腳本中函數(shù)的每個(gè)獨(dú)立出現(xiàn),但相同的解釋器用于后續(xù)調(diào)用。這意味著變量在對(duì)函數(shù)的調(diào)用中持續(xù)存在。

可以從多個(gè)線程調(diào)用函數(shù)的單個(gè)實(shí)例。但是函數(shù)execute()方法是同步的。

如果定義了屬性“?beanshell.function.init?”,它將作為源文件的名稱傳遞給解釋器。這可用于定義常用方法和變量。bin 目錄中有一個(gè)示例初始化文件:BeanShellFunction.bshrc

在執(zhí)行腳本之前設(shè)置以下變量:

  • log?- BeanShell 函數(shù)的Logger?(*)
  • ctx?-?JMeterContext對(duì)象
  • vars?-?JMeterVariables對(duì)象
  • props?- JMeterProperties(類java.util.Properties)對(duì)象
  • threadName?- 線程名(字符串)
  • Sampler?- 當(dāng)前的Sampler(如果有)
  • SampleResult?- 當(dāng)前的SampleResult(如果有)
(*) 表示這是在處理初始化文件(如果有)之前設(shè)置的。其他變量因調(diào)用而異。

參數(shù)

屬性 ? 描述 ? 必需的 BeanShell 腳本 ? beanshell 腳本(不是文件名) ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

${__BeanShell(123*456)}

返回56088

${__BeanShell(source("function.bsh"))}

處理function.bsh中的腳本

請(qǐng)記住為文本字符串和表示文本字符串的 JMeter 變量包括任何必要的引號(hào)。 ^

__groovy

__groovy函數(shù)評(píng)估傳遞給它?的Apache Groovy腳本,并返回結(jié)果。

如果定義了屬性“?groovy.utilities?”,它將由 ScriptEngine 加載。這可用于定義常用方法和變量。bin目錄中有一個(gè)示例初始化文件:utility.groovy

在執(zhí)行腳本之前設(shè)置以下變量:

  • log?- groovy 函數(shù)的Logger?(*)
  • ctx?-?JMeterContext對(duì)象
  • vars?-?JMeterVariables對(duì)象
  • props?- JMeterProperties(類java.util.Properties)對(duì)象
  • threadName?- 線程名(字符串)
  • sampler?- 當(dāng)前的Sampler,如果有的話
  • prev?- 上一個(gè)SampleResult(如果有)
  • OUT?- System.out

(*) 表示這是在處理初始化文件(如果有)之前設(shè)置的。其他變量因調(diào)用而異。

使用此函數(shù)時(shí),請(qǐng)使用上面定義的變量,而不是使用字符串替換來訪問腳本中的變量。遵循此模式將通過確保可以緩存 Groovy 來確保您的測(cè)試是高性能的。

例如,不要執(zhí)行以下操作:

<span style="color:#000000"><span style="color:orange">${__groovy("${myVar}".substring(0\,2))}</span></span>

想象一下,變量 myVar 隨每次交易而變化,上面的 Groovy 無法緩存,因?yàn)槟_本每次都在變化。

而是執(zhí)行以下操作,可以緩存:

<span style="color:#000000"><span style="color:orange">${__groovy(vars.get("myVar").substring(0\,2))}</span></span>

參數(shù)

屬性 ? 描述 ? 必需的 要評(píng)估的表達(dá)式 ? Apache Groovy 腳本(不是文件名) 本身包含逗號(hào)的參數(shù)值應(yīng)根據(jù)需要進(jìn)行轉(zhuǎn)義。如果您需要在參數(shù)值中包含逗號(hào),請(qǐng)將其轉(zhuǎn)義為:'?\,?' ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__groovy(123*456)}</span></span>

返回56088

<span style="color:#000000"><span style="color:orange">${__groovy(vars.get("myVar").substring(0\,2))}</span></span>

如果 var 的值為JMeter,它將在運(yùn)行String.substring(0,2)時(shí)返回JM。請(qǐng)注意,已轉(zhuǎn)義為\,

請(qǐng)記住為文本字符串和表示文本字符串的 JMeter 變量包括任何必要的引號(hào)。 ^

__分裂

split 函數(shù)根據(jù)分隔符將傳遞給它的字符串拆分,并返回原始字符串。如果任何分隔符相鄰,則返回“??”作為值。拆分字符串在變量${VAR_1}${VAR_2}等中返回。變量的計(jì)數(shù)在${VAR_n}中返回。尾隨分隔符被視為缺失變量,并返回“??”。此外,為了讓它更好地與 ForEach 控制器一起工作,?__split現(xiàn)在刪除第一個(gè)未使用的變量,以防它是由先前的拆分設(shè)置的。

示例:?在測(cè)試計(jì)劃中
定義VAR?="?a||c| "。

? <span style="color:#000000"><span style="color:orange">${__split(${VAR},VAR,|)}</span></span>
這將返回VAR的內(nèi)容,即“?a||c|?”并設(shè)置以下變量:
VAR_n?=?4
VAR_1?=?a
VAR_2?=??
VAR_3?=?c
VAR_4?=??
VAR_5?=

參數(shù)

屬性 ? 描述 ? 必需的 要拆分的字符串 ? 分隔字符串,例如“?a|b|c?” ? 是的 變量名 ? 用于重用此函數(shù)計(jì)算的值的引用名稱。 ? 是的 分隔符 ? 分隔符,例如|?.?如果省略,使用 ,。請(qǐng)注意需要將 , 指定為\, ? ^

__XPath

XPath 函數(shù)讀取一個(gè) XML 文件并匹配 XPath。每次調(diào)用該函數(shù)時(shí),都會(huì)返回下一個(gè)匹配項(xiàng)。在文件末尾,它將環(huán)繞到開頭。如果沒有節(jié)點(diǎn)匹配,則函數(shù)將返回空字符串,并將警告消息寫入 JMeter 日志文件。

請(qǐng)注意,整個(gè) NodeList 都保存在內(nèi)存中。

例子: <span style="color:#000000"><span style="color:orange">${__XPath(/path/to/build.xml, //target/@name)}</span></span> 這將匹配build.xml中的所有目標(biāo)并返回下一個(gè) name 屬性的內(nèi)容

參數(shù)

屬性 ? 描述 ? 必需的 要解析的 XML 文件 ? 要解析的 XML 文件 ? 是的 XPath ? 用于匹配 XML 文件中的節(jié)點(diǎn)的 XPath 表達(dá)式 ? 是的 ^

__setProperty

setProperty 函數(shù)設(shè)置 JMeter 屬性的值。函數(shù)的默認(rèn)返回值是空字符串,因此函數(shù)調(diào)用可以在函數(shù)有效的任何地方使用。

可以通過將可選的第三個(gè)參數(shù)設(shè)置為“?true?”來返回原始值。

屬性對(duì) JMeter 來說是全局的,因此可以用來在線程和線程組之間進(jìn)行通信

參數(shù)

屬性 ? 描述 ? 必需的 屬性名稱 ? 要設(shè)置的屬性名稱。 ? 是的 適當(dāng)?shù)膬r(jià)值 ? 屬性的值。 ? 是的 真假 ? 是否應(yīng)該返回原始值? ? ^

__時(shí)間

time 函數(shù)以各種格式返回當(dāng)前時(shí)間。

參數(shù)

屬性 ? 描述 ? 必需的 格式 ? 要傳遞給SimpleDateFormat的格式。該函數(shù)支持各種速記別名,見下文。如果省略,則該函數(shù)返回自紀(jì)元以來的當(dāng)前時(shí)間(以毫秒為單位)。 ? 變量名 ? 要設(shè)置的變量的名稱。 ?

如果省略格式字符串,則函數(shù)返回自紀(jì)元以來的當(dāng)前時(shí)間(以毫秒為單位)。如果格式匹配“?/ddd?”(其中ddd是十進(jìn)制數(shù)字),則該函數(shù)返回當(dāng)前時(shí)間(以毫秒為單位)除以ddd的值。例如,“?/1000?”返回自紀(jì)元以來的當(dāng)前時(shí)間(以秒為單位)。否則,將當(dāng)前時(shí)間傳遞給 SimpleDateFormat。提供了以下速記別名:

  • YMD?=?yyyyMMdd
  • HMS?=?HHmmss
  • YMDHMS?=?yyyyMMdd-HHmmss
  • USER1?= JMeter 屬性time.USER1中的任何內(nèi)容
  • USER2?= JMeter 屬性time.USER2中的任何內(nèi)容

可以通過設(shè)置適當(dāng)?shù)?JMeter 屬性來更改默認(rèn)值,例如?time.YMD=yyMMdd

<span style="color:#000000"><span style="color:orange">${__time(dd/MM/yyyy,)}</span></span> 如果在 2018 年 1 月 21 日運(yùn)行,?將返回21/01/2018

<span style="color:#000000"><span style="color:orange">${__time(YMD,)}</span></span> 如果在 2018 年 1 月 21 日運(yùn)行,?將返回20180121

<span style="color:#000000"><span style="color:orange">${__time()}</span></span> 將以毫秒為單位返回時(shí)間1516540541624

^

__jexl2

jexl 函數(shù)返回計(jì)算?Commons JEXL 表達(dá)式的結(jié)果。有關(guān) JEXL 表達(dá)式的更多信息,請(qǐng)參閱下面的鏈接。

__jexl2函數(shù)使用 Commons JEXL?2

  • JEXL 語法說明
  • JEXL 示例

參數(shù)

屬性 ? 描述 ? 必需的 表達(dá) ? 要評(píng)估的表達(dá)式。例如,6*(5+2) ? 是的 變量名 ? 要設(shè)置的變量的名稱。 ?

以下變量可用于腳本:

  • log?-函數(shù)的Logger
  • ctx?-?JMeterContext對(duì)象
  • vars?-?JMeterVariables對(duì)象
  • props?- JMeterProperties(類java.util.Properties)對(duì)象
  • threadName?- 包含當(dāng)前線程名稱的字符串
  • sampler?- 當(dāng)前的Sampler對(duì)象(如果有)
  • sampleResult?- 以前的 SampleResult對(duì)象(如果有)
  • OUT?- System.out - 例如OUT.println("message")

Jexl 還可以創(chuàng)建類并在其上調(diào)用方法,例如:

<span style="color:#000000"><span style="color:orange">Systemclass=log.class.forName("java.lang.System"); 現(xiàn)在=Systemclass.currentTimeMillis(); </span></span> 請(qǐng)注意,網(wǎng)站上的 Jexl 文檔錯(cuò)誤地建議“?div?”進(jìn)行整數(shù)除法。實(shí)際上“?div?”和“?/?”都執(zhí)行正常的除法。可以得到如下相同的效果: <span style="color:#000000"><span style="color:orange">我= 5 / 2; i.intValue(); // 或使用 i.longValue() </span></span>

JMeter 允許表達(dá)式包含多個(gè)語句。 ^

__jexl3

jexl 函數(shù)返回計(jì)算?Commons JEXL 表達(dá)式的結(jié)果。有關(guān) JEXL 表達(dá)式的更多信息,請(qǐng)參閱下面的鏈接。

__jexl3函數(shù)使用 Commons JEXL?3

  • JEXL 語法說明
  • JEXL 示例

參數(shù)

屬性 ? 描述 ? 必需的 表達(dá) ? 要評(píng)估的表達(dá)式。例如,6*(5+2) ? 是的 變量名 ? 要設(shè)置的變量的名稱。 ?

以下變量可用于腳本:

  • log?-函數(shù)的Logger
  • ctx?-?JMeterContext對(duì)象
  • vars?-?JMeterVariables對(duì)象
  • props?- JMeterProperties(類java.util.Properties)對(duì)象
  • threadName?- 包含當(dāng)前線程名稱的字符串
  • sampler?- 當(dāng)前的Sampler對(duì)象(如果有)
  • sampleResult?- 以前的 SampleResult對(duì)象(如果有)
  • OUT?- System.out - 例如OUT.println("message")

Jexl 還可以創(chuàng)建類并在其上調(diào)用方法,例如:

<span style="color:#000000"><span style="color:orange">Systemclass=log.class.forName("java.lang.System"); 現(xiàn)在=Systemclass.currentTimeMillis(); </span></span> 請(qǐng)注意,網(wǎng)站上的 Jexl 文檔錯(cuò)誤地建議“?div?”進(jìn)行整數(shù)除法。實(shí)際上“?div?”和“?/?”都執(zhí)行正常的除法。可以得到如下相同的效果: <span style="color:#000000"><span style="color:orange">我= 5 / 2; i.intValue(); // 或使用 i.longValue() </span></span>

JMeter 允許表達(dá)式包含多個(gè)語句。 ^

__V

V(變量)函數(shù)返回對(duì)變量名表達(dá)式求值的結(jié)果。這可用于評(píng)估嵌套變量引用(當(dāng)前不支持)。

例如,如果有變量A1A2N?=?1

  • ${A1}?- 工作正常
  • ${A${N}}?- 不起作用(嵌套變量引用)
  • ${__V(A${N})}?- 工作正常。A${N}變?yōu)?strong>A1,__V函數(shù)返回A1的值

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 要評(píng)估的變量。 ? 是的 默認(rèn)值 ? 未找到變量時(shí)的默認(rèn)值,如果為空且未找到變量,則函數(shù)返回變量名稱 ? ^

__evalVar

evalVar 函數(shù)返回計(jì)算存儲(chǔ)在變量中的表達(dá)式的結(jié)果。

這允許人們從文件中讀取字符串,并處理其中的任何變量引用。例如,如果變量“?query?”包含“?select ${column} from ${table}?”并且“?column?”和“?table?”包含“?name?”和“?customers?”,則${__evalVar(query)}?將評(píng)估為“從客戶中選擇名稱”。

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 要評(píng)估的變量。 ? 是的 ^

__eval

eval 函數(shù)返回計(jì)算字符串表達(dá)式的結(jié)果。

這允許在存儲(chǔ)在變量中的字符串中插入變量和函數(shù)引用。例如,給定以下變量:

  • 姓名=史密斯
  • =年齡
  • =生日
  • SQL?=?select ${column} from ${table} where name='${name}'
然后${__eval(${SQL})}將評(píng)估為“從 name='Smith' 的生日中選擇年齡”。

這可以與 CSV 數(shù)據(jù)集結(jié)合使用,例如 SQL 語句和值都在數(shù)據(jù)文件中定義。

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 要評(píng)估的變量。 ? 是的 ^

__char

char 函數(shù)將計(jì)算數(shù)字列表的結(jié)果作為 Unicode 字符返回。另請(qǐng)參見下面的__unescape()

這允許將任意字符值添加到字段中。

參數(shù)

屬性 ? 描述 ? 必需的 Unicode 字符編號(hào)(十進(jìn)制或 0xhex) ? 要轉(zhuǎn)換為 Unicode 字符?的十進(jìn)制數(shù)(或十六進(jìn)制數(shù),如果以0x為前綴,或八進(jìn)制數(shù),如果以0為前綴)。 ? 是的

示例:
${__char(13,10)}?=?${__char(0xD,0xA)}?=?${__char(015,012)}?=?CRLF
${__char(165)}?=?(日元)

^

__unescape

unescape 函數(shù)返回對(duì) Java 轉(zhuǎn)義字符串求值的結(jié)果。另請(qǐng)參見上面的__char()

這允許人們向字段添加字符,否則這些字符很難通過 GUI 定義(或不??可能)。

參數(shù)

屬性 ? 描述 ? 必需的 取消轉(zhuǎn)義的字符串 ? 要轉(zhuǎn)義的字符串。 ? 是的

示例:
${__unescape(\r\n)}?=?CRLF
${__unescape(1\t2)}?=?1?[tab]?2

^

__unescapeHtml

將包含 HTML 實(shí)體轉(zhuǎn)義的字符串轉(zhuǎn)義為包含與轉(zhuǎn)義對(duì)應(yīng)的實(shí)際 Unicode 字符的字符串的函數(shù)。支持 HTML 4.0 實(shí)體。

例如,字符串

<span style="color:#000000"><span style="color:orange">${__unescapeHtml(<Fran?ais>)}</span></span> 將返回<Fran?ais>

如果一個(gè)實(shí)體無法識(shí)別,則將其單獨(dú)放置,并逐字插入結(jié)果字符串中。例如${__unescapeHtml(>&zzzz;x)}將返回>&zzzz;x

使用來自 Commons Lang 的?StringEscapeUtils#unescapeHtml(String) 。

參數(shù)

屬性 ? 描述 ? 必需的 取消轉(zhuǎn)義的字符串 ? 要轉(zhuǎn)義的字符串。 ? 是的 ^

__escapeHtml

使用 HTML 實(shí)體對(duì)字符串中的字符進(jìn)行轉(zhuǎn)義的函數(shù)。支持 HTML 4.0 實(shí)體。

例如,

<span style="color:#000000"><span style="color:orange">${__escapeHtml("面包" & "黃油")}</span></span> 返回:?“面包”?&?“黃油”?.

使用來自 Commons Lang 的?StringEscapeUtils#escapeHtml(String) 。

參數(shù)

屬性 ? 描述 ? 必需的 要轉(zhuǎn)義的字符串 ? 要轉(zhuǎn)義的字符串。 ? 是的 ^

__urldecode

解碼application/x-www-form-urlencoded字符串的函數(shù)。注意:使用 UTF-8 作為編碼方案。

例如,字符串

<span style="color:#000000"><span style="color:orange">${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+法語)}</span></span> 返回?單詞“school”在法語中是“école”

使用 Java 類URLDecoder。

參數(shù)

屬性 ? 描述 ? 必需的 要解碼的字符串 ? 帶有要解碼的 URL 編碼字符的字符串。 ? 是的 ^

__urlencode

將字符串編碼為application/x-www-form-urlencoded字符串的函數(shù)。

例如,字符串

<span style="color:#000000"><span style="color:orange">${__urlencode(“學(xué)校”在法語中是“école”)}</span></span> 返回?Word+%22school%22+is+%22%C3%A9cole%22+in+french

使用 Java 類URLEncoder。

參數(shù)

屬性 ? 描述 ? 必需的 要編碼的字符串 ? 以 URL 編碼字符編碼的字符串。 ? 是的 ^

__FileToString

FileToString 函數(shù)可用于讀取整個(gè)文件。每次調(diào)用它都會(huì)讀取整個(gè)文件。

如果打開或讀取文件發(fā)生錯(cuò)誤,則函數(shù)返回字符串“?**ERR**?”

參數(shù)

屬性 ? 描述 ? 必需的 文件名 ? 文件名的路徑。(路徑可以相對(duì)于 JMeter 啟動(dòng)目錄) ? 是的 如果不是平臺(tái)默認(rèn)的文件編碼 ? 用于讀取文件的編碼。如果未指定,則使用平臺(tái)默認(rèn)值。 ? 變量名 ? 引用名稱 -?refName?- 用于重用此函數(shù)創(chuàng)建的值。存儲(chǔ)值的格式為 ${refName} ?

每次執(zhí)行函數(shù)時(shí)都會(huì)解析文件名、編碼和引用名稱參數(shù)。

^

__samplerName

samplerName 函數(shù)返回當(dāng)前采樣器的名稱(即標(biāo)簽)。

該功能在沒有關(guān)聯(lián)采樣器的測(cè)試元素中不起作用。例如測(cè)試計(jì)劃。配置元素也沒有關(guān)聯(lián)的采樣器。然而,一些配置元素被采樣器直接引用,例如 HTTP Header Manager 和 Http Cookie Manager,在這種情況下,函數(shù)在 Http Sampler 的上下文中解析。預(yù)處理器、后處理器和斷言總是有一個(gè)關(guān)聯(lián)的采樣器。

例子:

<span style="color:#000000"><span style="color:orange">${__samplerName()}</span></span>

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 引用名稱 -?refName?- 用于重用此函數(shù)創(chuàng)建的值。存儲(chǔ)值的格式為 ${refName} ? ^

__TestPlanName

TestPlanName 函數(shù)返回當(dāng)前測(cè)試計(jì)劃的名稱(可以在 Include Plans 中使用以了解調(diào)用測(cè)試計(jì)劃的名稱)。

例子:

<span style="color:#000000"><span style="color:orange">${__TestPlanName}</span></span> 將返回您的測(cè)試計(jì)劃的文件名,例如,如果計(jì)劃在名為 Demo.jmx 的文件中,它將返回“?Demo.jmx

^

__escapeOroRegexpChars

轉(zhuǎn)義ORO Regexp 元字符的函數(shù),它相當(dāng)于Java Regexp Engine 中的\Q?\E

例如,

<span style="color:#000000"><span style="color:orange">${__escapeOroRegexpChars([^"].+?,)}</span></span> 返回:?\[\^\"\]\.\+\?

使用來自 ORO 的 Perl5Compiler#quotemeta(String)。

參數(shù)

屬性 ? 描述 ? 必需的 要轉(zhuǎn)義的字符串 ? 要轉(zhuǎn)義的字符串。 ? 是的 變量名 ? 引用名稱 -?refName?- 用于重用此函數(shù)創(chuàng)建的值。存儲(chǔ)值的格式為 ${refName} ? ^

__escapeXml

使用 XML 1.0 實(shí)體對(duì)字符串中的字符進(jìn)行轉(zhuǎn)義的函數(shù)。

例如,

<span style="color:#000000"><span style="color:orange">${__escapeXml("面包" & '黃油')}</span></span> 返回:?“面包”;&?“黃油”?.

使用來自 Commons Lang 的?StringEscapeUtils#escapeXml10(String) 。

參數(shù)

屬性 ? 描述 ? 必需的 要轉(zhuǎn)義的字符串 ? 要轉(zhuǎn)義的字符串。 ? 是的 ^

__timeShift

timeShift 函數(shù)返回給定格式的日期,并添加指定的秒數(shù)、分鐘數(shù)、小時(shí)數(shù)、天數(shù)或月數(shù)

參數(shù)

屬性 ? 描述 ? 必需的 格式 ? 要傳遞給 DateTimeFormatter 的格式。請(qǐng)參閱DateTimeFormatter?如果省略,則該函數(shù)使用自紀(jì)元以來的毫秒數(shù)格式。 ? 換班日期 ? 以參數(shù) 'Format' 設(shè)置的格式指示日期要移位 如果省略,則日期設(shè)置為現(xiàn)在 ? 價(jià)值轉(zhuǎn)移 ? 根據(jù)持續(xù)時(shí)間的文本表示,例如 PnDTnHnMn.nS,指示要轉(zhuǎn)換的指定秒數(shù)、分鐘數(shù)、小時(shí)數(shù)或天數(shù)。請(qǐng)參閱 https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
  • PT20.345S解析為 20.345 秒
  • PT15M解析為 15 分鐘
  • PT10H解析為 10 小時(shí)
  • P2D解析為 2 天
  • -P6H3M解析為 -6 小時(shí) -3 分鐘
? 用于格式的語言環(huán)境 ? 語言環(huán)境的字符串格式。語言代碼必須是小寫的。國(guó)家代碼必須是大寫的。分隔符必須是下劃線。例如:en_EN 請(qǐng)參閱 http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html 如果省略,默認(rèn)情況下該函數(shù)使用 ApacheJMeter 語言環(huán)境之一。 ? 變量名 ? 要設(shè)置的變量的名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__timeShift(dd/MM/yyyy,21/01/2018,P2D,,)}</span></span> 返回23/01/2018 <span style="color:#000000"><span style="color:orange">${__timeShift(dd MMMM yyyy,21 février 2018,P2D,fr_FR,)}</span></span> 2018 年 2 月 23 日回歸

^

__消化

摘要函數(shù)返回特定散列算法中的加密值,帶有可選的鹽、大寫字母和變量名。

參數(shù)

屬性 ? 描述 ? 必需的 算法 ? 用于加密的算法 對(duì)于可能的算法,請(qǐng)參閱?StandardNames中的 MessageDigest
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
考慮到空格以供Salt 添加String 編碼 ? 是的 要編碼的字符串 ? 將被加密的字符串 ? 是的 加鹽 ? 要添加到字符串中的鹽(在它之后) ? 大寫值 ? 結(jié)果默認(rèn)為小寫。選擇真到大寫結(jié)果。 ? 變量名 ? 要設(shè)置的變量的名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__digest(MD5,Errare humanum est,,,)}</span></span> 返回c49f00b92667a35c63708933384dad52
? <span style="color:#000000"><span style="color:orange">${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}</span></span> 返回a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

^

__dateTimeConvert

__dateTimeConvert函數(shù)將源格式的日期轉(zhuǎn)換為目標(biāo)格式,將結(jié)果可選地存儲(chǔ)在變量名稱中

參數(shù)

屬性 ? 描述 ? 必需的 日期字符串 ? 要從源日期格式轉(zhuǎn)換為目標(biāo)日期格式的日期字符串。如果源日期格式為空,則此處可以使用日期作為紀(jì)元時(shí)間。 ? 是的 源日期格式 ? 原始日期格式。如果為空,則日期字符串字段必須是紀(jì)元時(shí)間。 ? 目標(biāo)日期格式 ? 新的日期格式 ? 是的 變量名 ? 要設(shè)置的變量的名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}</span></span> 返回21/01/2018

使用紀(jì)元時(shí)間值:1526574881000,

<span style="color:#000000"><span style="color:orange">${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}</span></span> 返回UTC 時(shí)間 17/05/2018?16:34?(-Duser.timezone=GMT)

^

__isPropDefined

__isPropDefined函數(shù)如果屬性存在則返回 true,否則返回 false?。

參數(shù)

屬性 ? 描述 ? 必需的 屬性名稱 ? 用于檢查是否已定義的屬性名稱 ? 是的

例子:

<span style="color:#000000"><span style="color:orange">${__isPropDefined(START.HMS)}</span></span> 將返回

^

__isVarDefined

__isVarDefined函數(shù)如果變量存在則返回 true,否則返回 false?。

參數(shù)

屬性 ? 描述 ? 必需的 變量名 ? 用于檢查是否已定義的變量名稱 ? 是的

例子:

<span style="color:#000000"><span style="color:orange">${__isVarDefined(JMeterThread.last_sample_ok)}</span></span> 將返回

^

__changeCase

change case 函數(shù)返回一個(gè)字符串值,該值已按照特定模式更改。結(jié)果可以選擇保存在 JMeter 變量中。

參數(shù)

屬性 ? 描述 ? 必需的 改變大小寫的字符串 ? 將更改大小寫的字符串 ? 是的 改變案例模式 ? 用于更改大小寫的模式,例如ab-CD eF
  • UPPER結(jié)果為 AB-CD EF
  • 降低結(jié)果為 ab-cd ed
  • 將結(jié)果大寫為 Ab-CD?eF
更改大小寫模式不區(qū)分大小寫 ? 是的 變量名 ? 要設(shè)置的變量的名稱。 ?

例子:

<span style="color:#000000"><span style="color:orange">${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}</span></span> 將返回AVARO OMNIA DESUNT、INOPI PAUCA、SAPIENTI NIHIL <span style="color:#000000"><span style="color:orange">${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}</span></span> 將返回勞動(dòng)力omnia vincit improbus <span style="color:#000000"><span style="color:orange">${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}</span></span> 將返回Omnibus viis romam pervenitur

^

__StringToFile

__StringToFile函數(shù)可用于將字符串寫入文件。每次調(diào)用它時(shí),它都會(huì)將一個(gè)字符串寫入文件追加或覆蓋。

函數(shù)的默認(rèn)返回值是空字符串

參數(shù)

屬性 ? 描述 ? 必需的 文件路徑 ? 文件名的路徑。(路徑是絕對(duì)的) ? 是的 要寫入的字符串 ? 要寫入文件的字符串。
如果您需要在內(nèi)容中插入換行符,請(qǐng)?jiān)谧址?使用\n 。
? 是的 附加到文件? ? 字符串的寫法,true表示追加,false?表示覆蓋。如果未指定,則默認(rèn)附加為true ? 文件編碼(如果不是 UTF-8) ? 用于寫入文件的編碼。如果未指定,則默認(rèn)編碼為UTF-8 ? ^

20.6 預(yù)定義變量

大多數(shù)變量是通過調(diào)用函數(shù)或通過用戶定義變量等測(cè)試元素設(shè)置的;在這種情況下,用戶可以完全控制所使用的變量名稱。然而,一些變量是由 JMeter 在內(nèi)部定義的。下面列出了這些。

  • COOKIE_cookiename?- 包含 cookie 值(請(qǐng)參閱HTTP Cookie 管理器)
  • JMeterThread.last_sample_ok?- 最后一個(gè)樣本是否正常 -?true?/?false。注意:這是在 PostProcessors 和 Assertions 運(yùn)行后更新的。
  • START變量(見下一節(jié))

20.6 預(yù)定義屬性

JMeter 屬性集是從 JMeter 啟動(dòng)時(shí)定義的系統(tǒng)屬性初始化的;額外的 JMeter 屬性在jmeter.propertiesuser.properties或命令行中定義。

JMeter 定義了一些內(nèi)置屬性。下面列出了這些。為方便起見,START屬性也被復(fù)制到具有相同名稱的變量中。

  • START.MS?- JMeter 開始時(shí)間(以毫秒為單位)
  • START.YMD?- JMeter 開始時(shí)間為yyyyMMdd
  • START.HMS?- JMeter 開始時(shí)間為HHmmss
  • TESTSTART.MS?- 測(cè)試開始時(shí)間,以毫秒為單位

請(qǐng)注意,START變量/屬性代表 JMeter 啟動(dòng)時(shí)間,而不是測(cè)試開始時(shí)間。它們主要用于文件名等。

?

總結(jié)

以上是生活随笔為你收集整理的关于Jmeter中的函数和变量用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。