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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

github

20. 函數和變量

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

${__functionName(var1,var2,var3)}

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

如果函數參數包含逗號,那么一定要用“?\?”轉義,否則JMeter會將其視為參數分隔符。例如:

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

變量引用如下:

${變量}

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

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

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

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

20.1 函數能做什么

有兩種函數:用戶定義的靜態值(或變量)和內置函數。
用戶定義的靜態值允許用戶定義在編譯測試樹并提交運行時用它們的靜態值替換的變量。此替換在測試運行開始時發生一次。這可用于替換所有 HTTP 請求的 DOMAIN 字段,例如 - 使更改測試以針對具有相同測試的不同服務器變得簡單。

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

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

使用內置函數,用戶可以在運行時根據以前的響應數據、函數所在的線程、時間和許多其他來源計算新值。這些值是在整個測試過程中為每個請求生成的。

函數在線程之間共享。測試計劃中每次出現的函數調用都由單獨的函數實例處理。

20.2 函數和變量可以用在什么地方?

函數和變量可以寫入任何測試組件的任何字段(除了 TestPlan - 見下文)。某些字段不允許使用隨機字符串,因為它們需要數字,因此不會接受函數。但是,大多數字段都允許使用函數。

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

  • 整數
  • 長和
  • 機器名
  • 豆殼
  • 時髦的
  • 腳本
  • jexl2/jexl3
  • 隨機的
  • 時間
  • 屬性函數
  • 日志功能

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

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

20.3 如何引用變量和函數

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

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

本身包含逗號的參數值應根據需要進行轉義。如果您需要在參數值中包含逗號,請將其轉義,如下所示:'?\,?'。?例如,這適用于腳本函數 - Javascript、Beanshell、Jexl、groovy - 有必要在腳本方法調用中轉義任何可能需要的逗號 - 例如

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

或者,您可以將腳本定義為變量,例如在測試計劃中:

腳本 vars.put("name","value") 然后可以按如下方式引用該腳本: ${__BeanShell(${SCRIPT})} 不需要在SCRIPT變量中轉義逗號,因為在將變量替換為其值之前會解析函數調用。這與 JSR223 或 BeanShell 采樣器配合使用效果很好,因為它們可用于測試 Javascript、Jexl 和 BeanShell 腳本。

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

JMeter 提供了一個工具來幫助您為各種內置函數構建函數調用,然后您可以復制粘貼。它不會自動為您轉義值,因為函數可以是其他函數的參數,并且您應該只將您想要作為文字的值轉義。

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

可以使用__logn()函數報告變量或函數的值。定義變量后,__logn()函數引用可以在測試計劃中的任何地方使用。或者,Java 請求采樣器可用于創建包含變量引用的示例;輸出將顯示在適當的偵聽器中。請注意,有一個調試采樣器?可用于在樹視圖偵聽器中顯示變量的值等。

*如果你定義了一個與內置函數同名的用戶定義的靜態變量,你的靜態變量將覆蓋內置函數。

20.4 函數助手對話框

函數助手對話框可從 JMeter 的工具菜單中獲得。

函數助手對話框

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

完成此操作后,單擊“生成”按鈕,并生成適當的字符串供您復制粘貼到您喜歡的任何地方的測試計劃中。

?

20.5 功能

__regex函數

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

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

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

參數

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

__柜臺

計數器每次調用時都會生成一個新數字,從 1 開始,每次遞增 +1。計數器可以配置為將每個模擬用戶的值分開,或者為所有用戶使用相同的計數器。如果每個用戶的值分別遞增,這就像計算測試計劃的迭代次數。全局計數器就像計算該請求運行了多少次。

計數器使用一個整數變量來保存計數,因此它的最大值為 2,147,483,647。

計數器函數實例是完全獨立的。全局計數器 - “?FALSE?” - 由每個計數器實例單獨維護。

同一迭代中的多個__counter函數調用不會進一步增加該值。
如果您想要為每個樣本增加一個計數,請使用預處理器中的函數,例如User Parameters。

參數

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

__threadNum

線程號函數只是返回當前正在執行的線程號。這些數字僅相對于它們的 ThreadGroup 是局部唯一的,這意味著從這個函數的角度來看,一個線程組中的線程 #1 與另一個線程組中的線程 #1 無法區分。

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

此函數沒有參數。

使用示例:

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

此功能不適用于任何配置元素(例如用戶定義的變量),因為它們是從單獨的線程運行的。在測試計劃中使用它也沒有意義。 ^

__threadGroupName

線程組名稱函數只返回正在執行的線程組的名稱。

此函數沒有參數。

使用示例:

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

此功能不適用于任何配置元素(例如用戶定義的變量),因為它們是從單獨的線程運行的。在測試計劃中使用它也沒有意義。 ^

__intSum

intSum 函數可用于計算兩個或多個整數值的總和。

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

參數

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

例子:

<span style="color:#000000"><span style="color:orange">${__intSum(2,5,MYVAR)}</span></span> 將返回 7 (2+5) 并將結果存儲在 MYVAR 變量中。所以${MYVAR}將等于 7。
? <span style="color:#000000"><span style="color:orange">${__intSum(2,5,7)}</span></span> 將返回 14 (2+5+7) 并將結果存儲在 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 函數可用于計算兩個或多個 long 值的總和,只要您知道您的值不在 -2147483648 到 2147483647 的區間內,請使用它而不是 __intSum。

參數

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

例子:

<span style="color:#000000"><span style="color:orange">${__longSum(2,5,MYVAR)}</span></span> 將返回 7 (2+5) 并將結果存儲在 MYVAR 變量中。所以${MYVAR}將等于 7。
? <span style="color:#000000"><span style="color:orange">${__longSum(2,5,7)}</span></span> 將返回 14 (2+5+7) 并將結果存儲在 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 函數可用于從文本文件中讀取字符串。這對于運行需要大量可變數據的測試很有用。例如,在測試銀行應用程序時,可能需要 100 或 1000 個不同的帳號。

另請參閱?可能更易于使用的CSV 數據集配置測試元素。但是,目前不支持多個輸入文件。

每次調用它都會從文件中讀取下一行。所有線程共享同一個實例,因此不同的線程將得到不同的行。當到達文件末尾時,它將重新從頭開始讀取,除非已達到最大循環計數。如果測試腳本中有多個對該函數的引用,則每個引用都將獨立打開文件,即使文件名相同。[如果要在其他地方再次使用該值,請為每個函數調用使用不同的變量名。]

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

如果打開或讀取文件發生錯誤,則函數返回字符串“?**ERR**?”

參數

屬性 ? 描述 ? 必需的 文件名 ? 文件名的路徑。(路徑可以相對于 JMeter 啟動目錄)如果使用可選的序列號,路徑名應該適合傳遞給 DecimalFormat。請參閱下面的示例。 ? 是的 變量名 ? 引用名稱 -?refName?- 用于重用此函數創建的值。存儲值的格式為 ${refName}。默認為“?StringFromFile_?”。 ? 起始序號 ? 初始序列號(如果省略,則將結束序列號視為循環計數) ? 結束序號 ? 最終序號(如果省略,序號可以無限增加) ?

打開或重新打開文件時解析文件名參數。

每次執行函數時都會解析引用名稱參數(如果提供)。

使用序列號:

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

#

插入數字,沒有前導零或空格

000

如有必要,將壓縮后的數字插入前導零的三位數字

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

pin#'.'dat

將生成不帶前導零的數字并將點按字面意思
視為 pin1.dat、...、pin9.datpin10.dat、...、pin9999.dat

pin000'.'dat

將在保留點的同時生成前導零。當數字開始有更多數字時,該格式建議的這三個數字,序列將使用更多數字,如
pin001.dat、...?pin099.dat、...、pin999.dat、...、pin9999.dat

pin'.'dat#

將在保留點的同時附加不帶前導零的數字并生成
pin.dat1?, ...,?pin.dat9?, ...,?pin.dat999

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

^

__機器名

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

參數

屬性 ? 描述 ? 必需的 變量名 ? 用于重用此函數計算的值的引用名稱。 ?

例子:

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

^

__機器IP

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

參數

屬性 ? 描述 ? 必需的 變量名 ? 用于重用此函數計算的值的引用名稱。 ?

例子:

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

^

__javaScript

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

JMeter Javascript 函數調用一個獨立的 JavaScript 解釋器。Javascript用作腳本語言,因此您可以進行計算等。

javaScript 不是用于 JMeter 性能的最佳腳本語言。如果您的計劃需要大量線程,建議使用__jexl3__groovy函數。 對于 Nashorn 引擎,請參閱Java 平臺標準版 Nashorn 用戶指南。
對于 Rhino 引擎,請參閱Mozilla Rhino 概述

以下變量可用于腳本:

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

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

JMeter 不是瀏覽器,不會解釋下載頁面中的 JavaScript。

參數

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

例子:

<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)并將其存儲在變量MYDATE下
? <span style="color:#000000"><span style="color:orange">${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}</span></span> 將使用 maxRandom 變量,返回一個介于 0 和 maxRandom 之間的隨機值并將其存儲在 MYRESULT <span style="color:#000000"><span style="color:orange">${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}</span></span> 將使用maxRandomminRandom變量,返回maxRandomminRandom之間的隨機值并將其存儲在變量MYRESULT下 <span style="color:#000000"><span style="color:orange">${__javaScript("${VAR}"=="abcd",MYRESULT)}</span></span> VAR變量的值與abcd進行比較,返回truefalse并將結果存儲在 MYRESULT

^

__隨機的

random 函數返回一個介于給定最小值和最大值之間的隨機數。

參數

屬性 ? 描述 ? 必需的 最小值 ? 一個號碼 ? 是的 最大值 ? 更大的數字 ? 是的 變量名 ? 用于重用此函數計算的值的引用名稱。 ?

例子:

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

^

__隨機日期

RandomDate 函數返回一個介于給定開始日期和結束日期值之間的隨機日期。

參數

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

例子:

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

^

__隨機字符串

RandomString 函數使用要使用的字符中的字符返回長度的隨機字符串。

參數

屬性 ? 描述 ? 必需的 長度 ? 生成的字符串的數字長度 ? 是的 使用的字符 ? 用于生成字符串的字符 ? 變量名 ? 用于重用此函數計算的值的引用名稱。 ?

例子:

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

^

__RandomFromMultipleVars

RandomFromMultipleVars 函數根據Source Variables提供的變量值返回一個隨機值。

變量可以是簡單的或多值的,因為它們可以由以下提取器生成:
  • 邊界提取器
  • 正則表達式提取器
  • CSS 選擇器提取器
  • JSON 提取器
  • XPath 提取器
  • XPath2 提取器
多值變量是在您為Match Numbers設置-1時提取的變量。這導致創建名為varName_matchNr的匹配編號變量,并為每個值創建變量varName_n,其中 n = 1、2、3 等。

參數

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

例子:

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

^

__UUID

UUID 函數返回一個偽隨機類型 4 通用唯一標識符 (UUID)。

參數

屬性 ? 描述 ? 必需的

例子:

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

^

__CSV讀取

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

注意:JMeter 支持多個文件名。

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

當第一次遇到文件名時,文件被打開并讀入一個內部數組。如果檢測到空行,則將其視為文件結尾 - 這允許使用尾隨注釋。

對相同文件名的所有后續引用都使用相同的內部數組。注意文件名大小寫對函數很重要,即使操作系統不關心,所以CSVRead(abc.txt,0)CSVRead(aBc.txt,0)將引用不同的內部數組。

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

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

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

參數

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

例如,您可以如下設置一些變量:

  • 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)}
這將從一行讀取兩列,從下一個可用行讀取兩列。如果所有變量都定義在同一個用戶參數預處理器上,那么這些行將是連續的。否則,不同的線程可能會抓取下一行。

該功能不適用于大文件,因為整個文件都存儲在內存中。對于較大的文件,請使用CSV 數據集配置元素?或StringFromFile。 ^

__財產

屬性函數返回 JMeter 屬性的值。如果找不到屬性值,并且沒有提供默認值,則返回屬性名稱。提供默認值時,無需提供函數名稱 - 參數可以設置為 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?”,如果未定義)但不保存它

參數

屬性 ? 描述 ? 必需的 屬性名稱 ? 要檢索的屬性名稱。 ? 是的 變量名 ? 用于重用此函數計算的值的引用名稱。 ? 默認值 ? 屬性的默認值。 ? ^

__P

這是一個簡化的屬性函數,旨在與命令行上定義的屬性一起使用。與__property函數不同,沒有將值保存在變量中的選項,如果沒有提供默認值,則假定為 1。選擇 1 的值是因為它對循環等常見測試變量有效,線程數,斜升等。

例如:

定義屬性值:

<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
在上面的示例中,第一個函數調用將返回7,第二個函數調用將返回1,最后一個將返回www.dummy.org?(除非這些屬性已定義別處!)

參數

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

__日志

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

參數

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

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

${__log(消息)}

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

${__log(消息,輸出)}

寫入控制臺窗口

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

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

^

__logn

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

參數

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

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

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

將變量的值寫入控制臺窗口

^

__豆殼

BeanShell 函數評估傳遞給它的腳本,并返回結果。

為了提高性能,最好使用__groovy函數

有關使用 BeanShell 的完整詳細信息,請參閱 BeanShell 網站BeanShell - Lightweight Scripting for Java

請注意,不同的解釋器用于測試腳本中函數的每個獨立出現,但相同的解釋器用于后續調用。這意味著變量在對函數的調用中持續存在。

可以從多個線程調用函數的單個實例。但是函數execute()方法是同步的。

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

在執行腳本之前設置以下變量:

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

參數

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

例子:

${__BeanShell(123*456)}

返回56088

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

處理function.bsh中的腳本

請記住為文本字符串和表示文本字符串的 JMeter 變量包括任何必要的引號。 ^

__groovy

__groovy函數評估傳遞給它?的Apache Groovy腳本,并返回結果。

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

在執行腳本之前設置以下變量:

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

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

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

例如,不要執行以下操作:

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

想象一下,變量 myVar 隨每次交易而變化,上面的 Groovy 無法緩存,因為腳本每次都在變化。

而是執行以下操作,可以緩存:

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

參數

屬性 ? 描述 ? 必需的 要評估的表達式 ? Apache Groovy 腳本(不是文件名) 本身包含逗號的參數值應根據需要進行轉義。如果您需要在參數值中包含逗號,請將其轉義為:'?\,?' ? 是的 變量名 ? 用于重用此函數計算的值的引用名稱。 ?

例子:

<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,它將在運行String.substring(0,2)時返回JM。請注意,已轉義為\,

請記住為文本字符串和表示文本字符串的 JMeter 變量包括任何必要的引號。 ^

__分裂

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

示例:?在測試計劃中
定義VAR?="?a||c| "。

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

參數

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

__XPath

XPath 函數讀取一個 XML 文件并匹配 XPath。每次調用該函數時,都會返回下一個匹配項。在文件末尾,它將環繞到開頭。如果沒有節點匹配,則函數將返回空字符串,并將警告消息寫入 JMeter 日志文件。

請注意,整個 NodeList 都保存在內存中。

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

參數

屬性 ? 描述 ? 必需的 要解析的 XML 文件 ? 要解析的 XML 文件 ? 是的 XPath ? 用于匹配 XML 文件中的節點的 XPath 表達式 ? 是的 ^

__setProperty

setProperty 函數設置 JMeter 屬性的值。函數的默認返回值是空字符串,因此函數調用可以在函數有效的任何地方使用。

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

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

參數

屬性 ? 描述 ? 必需的 屬性名稱 ? 要設置的屬性名稱。 ? 是的 適當的價值 ? 屬性的值。 ? 是的 真假 ? 是否應該返回原始值? ? ^

__時間

time 函數以各種格式返回當前時間。

參數

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

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

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

可以通過設置適當的 JMeter 屬性來更改默認值,例如?time.YMD=yyMMdd

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

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

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

^

__jexl2

jexl 函數返回計算?Commons JEXL 表達式的結果。有關 JEXL 表達式的更多信息,請參閱下面的鏈接。

__jexl2函數使用 Commons JEXL?2

  • JEXL 語法說明
  • JEXL 示例

參數

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

以下變量可用于腳本:

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

Jexl 還可以創建類并在其上調用方法,例如:

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

JMeter 允許表達式包含多個語句。 ^

__jexl3

jexl 函數返回計算?Commons JEXL 表達式的結果。有關 JEXL 表達式的更多信息,請參閱下面的鏈接。

__jexl3函數使用 Commons JEXL?3

  • JEXL 語法說明
  • JEXL 示例

參數

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

以下變量可用于腳本:

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

Jexl 還可以創建類并在其上調用方法,例如:

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

JMeter 允許表達式包含多個語句。 ^

__V

V(變量)函數返回對變量名表達式求值的結果。這可用于評估嵌套變量引用(當前不支持)。

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

  • ${A1}?- 工作正常
  • ${A${N}}?- 不起作用(嵌套變量引用)
  • ${__V(A${N})}?- 工作正常。A${N}變為A1__V函數返回A1的值

參數

屬性 ? 描述 ? 必需的 變量名 ? 要評估的變量。 ? 是的 默認值 ? 未找到變量時的默認值,如果為空且未找到變量,則函數返回變量名稱 ? ^

__evalVar

evalVar 函數返回計算存儲在變量中的表達式的結果。

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

參數

屬性 ? 描述 ? 必需的 變量名 ? 要評估的變量。 ? 是的 ^

__eval

eval 函數返回計算字符串表達式的結果。

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

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

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

參數

屬性 ? 描述 ? 必需的 變量名 ? 要評估的變量。 ? 是的 ^

__char

char 函數將計算數字列表的結果作為 Unicode 字符返回。另請參見下面的__unescape()

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

參數

屬性 ? 描述 ? 必需的 Unicode 字符編號(十進制或 0xhex) ? 要轉換為 Unicode 字符?的十進制數(或十六進制數,如果以0x為前綴,或八進制數,如果以0為前綴)。 ? 是的

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

^

__unescape

unescape 函數返回對 Java 轉義字符串求值的結果。另請參見上面的__char()

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

參數

屬性 ? 描述 ? 必需的 取消轉義的字符串 ? 要轉義的字符串。 ? 是的

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

^

__unescapeHtml

將包含 HTML 實體轉義的字符串轉義為包含與轉義對應的實際 Unicode 字符的字符串的函數。支持 HTML 4.0 實體。

例如,字符串

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

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

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

參數

屬性 ? 描述 ? 必需的 取消轉義的字符串 ? 要轉義的字符串。 ? 是的 ^

__escapeHtml

使用 HTML 實體對字符串中的字符進行轉義的函數。支持 HTML 4.0 實體。

例如,

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

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

參數

屬性 ? 描述 ? 必需的 要轉義的字符串 ? 要轉義的字符串。 ? 是的 ^

__urldecode

解碼application/x-www-form-urlencoded字符串的函數。注意:使用 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。

參數

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

__urlencode

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

例如,字符串

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

使用 Java 類URLEncoder。

參數

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

__FileToString

FileToString 函數可用于讀取整個文件。每次調用它都會讀取整個文件。

如果打開或讀取文件發生錯誤,則函數返回字符串“?**ERR**?”

參數

屬性 ? 描述 ? 必需的 文件名 ? 文件名的路徑。(路徑可以相對于 JMeter 啟動目錄) ? 是的 如果不是平臺默認的文件編碼 ? 用于讀取文件的編碼。如果未指定,則使用平臺默認值。 ? 變量名 ? 引用名稱 -?refName?- 用于重用此函數創建的值。存儲值的格式為 ${refName} ?

每次執行函數時都會解析文件名、編碼和引用名稱參數。

^

__samplerName

samplerName 函數返回當前采樣器的名稱(即標簽)。

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

例子:

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

參數

屬性 ? 描述 ? 必需的 變量名 ? 引用名稱 -?refName?- 用于重用此函數創建的值。存儲值的格式為 ${refName} ? ^

__TestPlanName

TestPlanName 函數返回當前測試計劃的名稱(可以在 Include Plans 中使用以了解調用測試計劃的名稱)。

例子:

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

^

__escapeOroRegexpChars

轉義ORO Regexp 元字符的函數,它相當于Java Regexp Engine 中的\Q?\E

例如,

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

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

參數

屬性 ? 描述 ? 必需的 要轉義的字符串 ? 要轉義的字符串。 ? 是的 變量名 ? 引用名稱 -?refName?- 用于重用此函數創建的值。存儲值的格式為 ${refName} ? ^

__escapeXml

使用 XML 1.0 實體對字符串中的字符進行轉義的函數。

例如,

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

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

參數

屬性 ? 描述 ? 必需的 要轉義的字符串 ? 要轉義的字符串。 ? 是的 ^

__timeShift

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

參數

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

例子:

<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 日回歸

^

__消化

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

參數

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

例子:

<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函數將源格式的日期轉換為目標格式,將結果可選地存儲在變量名稱中

參數

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

例子:

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

使用紀元時間值:1526574881000,

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

^

__isPropDefined

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

參數

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

例子:

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

^

__isVarDefined

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

參數

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

例子:

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

^

__changeCase

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

參數

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

例子:

<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> 將返回勞動力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函數可用于將字符串寫入文件。每次調用它時,它都會將一個字符串寫入文件追加或覆蓋。

函數的默認返回值是空字符串

參數

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

20.6 預定義變量

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

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

20.6 預定義屬性

JMeter 屬性集是從 JMeter 啟動時定義的系統屬性初始化的;額外的 JMeter 屬性在jmeter.propertiesuser.properties或命令行中定義。

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

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

請注意,START變量/屬性代表 JMeter 啟動時間,而不是測試開始時間。它們主要用于文件名等。

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。