1. 程式人生 > 實用技巧 >Jmeter函式助手大全

Jmeter函式助手大全

__BeanShell

  • 入參:BeanShell語法的程式語句或者Bean Shell指令碼檔案
  • 示例:
${__BeanShell(123*456,)}:返回56088;
${__BeanShell(source("function.bsh",))}:執行在function.bsh中的指令碼;

__changeCase

  • 作用:修改字串大小寫
  • 入參:字串
  • 示例:
${__changeCase(test,UPPER,upper_test)}

__char

  • 作用:把一組數字轉化成Unicode字元
  • 入參:數字
  • 示例:
${__char(65,66)},變成AB

__counter

  • 作用:作為一個計數器使用,支援多執行緒(多使用者)
  • 入參:計數變數i,是否為執行緒計數器True/False
  • 示例
${__counter(FALSE,i)}; 全域性計數器
${__counter(TRUE,i)}; 每個使用者有自己的計數器

__CSVRead

  • 作用:從檔案讀取指定列的值(讀取固定值/讀取動態值/使用檔案別名)
  • 入參:檔案路徑;讀取方式;
  • 示例
${__CSVRead(E:\user_info.csv,0)};讀取第一列的值

${__CSVRead(E:\user_info.csv,next())}; 每次讀取下一次的值,配合第一條使用,否則不知道從哪裡開始

${__CSVRead(E:\user_info.csv,
*user_info)};使用別名,然後通過以下方法獲取資料 ${__CSVRead(*user_info, 1)}

__dataTimeConvert

  • 作用:格式化日期
  • 入參:日期/時間
  • 示例:
${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}

${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}; 官方例子,但是本地沒試出來

__digest

  • 作用:加密
  • 入參:
    • 加密演算法:MD2, MD5, SHA-1, SHA224, SHA256, SHA384, SHA512
    • 需要加密的值
    • 撒鹽加密
    • 是否要轉成大寫
    • 變數名稱

關於撒鹽加密(salt)

使用salt加密,它的基本想法是這樣的:

1.使用者註冊時,在密碼上撒一些鹽。生成一種味道,記住味道。
2.使用者再次登陸時,在輸入的密碼上撒鹽,聞一聞,判斷是否和原來的味道相同,相同就讓你吃飯。

  • 示例:
${__digest(MD5,test,1,,)}

__escapeHtml

  • 作用:字元轉成Html格式的字元,這樣編碼後傳給瀏覽器,瀏覽器就能識別了
  • 入參:字元
  • 示例:

__escapeOroRegexChars

  • 作用:把正則表示式轉換成Java正則引擎能識別的表示式
  • 入參:正則表示式
  • 示例:
${__escapeOroRegexpChars([^"].+?,test)}

__escapeXml

  • 作用:字元轉成xml格式的字元
  • 入參:字元
  • 示例:
${__escapeXml("bread" & 'butter')}

__eval

  • 作用:返回一個表示式的值,可以用此函式表示式來巢狀引用表示式
  • 入參:字元
  • 示例:
name=Smith 
column=age 
table=birthdays 
SQL=select ${column} from ${table} where name='${name}' 
${__eval(${SQL})}; 引用SQL變數

__evalVar

  • 作用:返回一個表示式的結果,存到一個變數中,供使用
  • 入參:字元
  • 示例:
QUERY = select ${column} from ${table}; column=name, table=customers
${__evalVar(QUERY)} = select name from customers

__fileToString

  • 作用:讀取檔案儲存至變數中
  • 入參:檔案路徑;編碼格式;變數名
  • 示例:
${__FileToString(E:\user_info.csv,utf-8,user_info)}

__groovy

  • 作用:執行Apache Groovy指令碼,並返回結果
  • 入參:表示式;變數名
  • 示例:
${__groovy(123*456,test)}

__intSum

  • 作用:整數求和,多個數字之間用逗號分隔
  • 入參:第一個整數;第二個及之後的整數;變數名
  • 示例:
${__intSum(1,2,3,4,5,6,7,8,test)}

__isPropDefined

  • 作用:判斷屬性是否存在
  • 入參:屬性名稱
  • 示例:
${__isPropDefined(START.HMS)}

__isVarDefined

  • 作用:判斷變數是否存在
  • 入參:變數名稱
  • 示例:
${__isVarDefined(JMeterThread.last_sample_ok)}

__javaScript

  • 作用:返回js指令碼執行結果
  • 入參:js表示式;變數名
  • 示例:
${__javaScript(new Date(),date)}

__jexl2

  • 作用:返回jexl表示式執行結果,使用JEXL2
  • 入參:jexl表示式;變數名
  • 示例:
${__jexl2(vars.get("START.YMD"),test)}

__jexl3

  • 作用:返回jexl表示式執行結果,JEXL3
  • 入參:jexl表示式;變數名
  • 示例:
${__jexl3(vars.get("START.YMD"),test)}
image.png

__log

  • 作用:日誌方法,返回輸入的字串資訊
  • 入參:字串;日誌級別;丟擲的異常資訊;附加資訊
    • OUT:控制檯列印
    • ERR:控制檯輸出,同時列印到標準輸出
    • DEBUG:控制檯輸出,DEBUG級別以上的都列印
    • INFO:控制檯列印INFO及ERROR級別的日誌
    • WARN:控制檯列印WARN,INFO,ERROR級別的日誌
    • ERROR:控制檯列印ERROR級別的日誌
  • 示例:
${__log(testing,ERR,error throw test,error test)}

__logn

與__log類似,不過它只記錄一條日誌,不返回值。

${__logn(testing,,)}

__longSum

  • 作用:計算長整型的和
  • 入參:整數
  • 示例:
${__longSum(1,2,3,4,sum)}

__machineIP

  • 作用:引用返回本機IP
  • 入參:變數名
  • 示例:
${__machineIP(ip)}

__machineName

  • 作用:引用返回本機Name
  • 入參:變數名
  • 示例:
${__machineName(name)}

__P

  • 作用:獲取命令列中定義的屬性,非GUI方式執行測試計劃時這個函式可用來做引數化,由執行命令動態指定引數值,方便與Jenkins等整合完成效能測試工作
  • 入參:屬性名稱;預設值
  • 示例:
${__P(group1.threads,)}

__property

  • 作用:獲取Jmeter的屬性,%JMETER_HOME%\bin\jmeter.properties
  • 入參:屬性名稱;變數名;預設值
  • 示例:
${__property(log_level.jmeter,log_Level,)}

__Random

  • 作用:生成指定範圍內的隨機數
  • 入參:左右範圍;變數名
  • 示例:
${__Random(1,20,random_num)}

__RandomDate

  • 作用:生成指定範圍內的日期
  • 入參:日期格式;左右範圍;語言;變數名
  • 示例:
${__RandomDate(,,2050-07-08,,)}

__RandomFromMultipleVars

  • 作用:給定的多個值中隨機取值
  • 入參:多個值,使用|分隔;變數名
  • 示例:
${__RandomFromMultipleVars(a|b|c|d|e,select)}
image.png

__RandomString

  • 作用:生成指定長度的字串
  • 入參:字串長度;可選字串;變數名
  • 示例:
${__RandomString(5,a3fxis,random_char)}

__regexFunction

  • 作用:提取正則表示式
  • 入參:
    • 用於解析伺服器響應資料的正則表示式
    • 模板字串()
    • 告訴JMeter使用第幾次匹配
      • 整數n:使用第n個匹配項;
      • RAND:隨機選擇一個匹配項;
      • ALL:使用所有匹配項,為每個匹配項建立一個模板字串,並將它們連線在一起
      • 浮點值0到1之間:根據公式(找到的總匹配數目*指定浮點值)計算使用第幾個匹配項,計算值向最近的整數取整
    • 如果在上一個引數中選擇了“ALL”,那麼這第4個引數會被插入到重複的模板值之間
    • 如果沒有找到匹配項返回的預設值
    • 重用函式解析值的引用名
    • 變數名稱
  • 示例:
${__regexFunction(road(.*)test,$1$,1,,,,)}

__samplerName

  • 作用:獲取當前按sampler的名稱
  • 入參:變數名
  • 示例:
${__samplerName(sample_name)}

__setProperty

  • 作用:動態設定jmeter屬性
  • 入參:屬性名稱;屬性值;是否返回函式結果
  • 示例:
${__setProperty(log_level.jmeter,Debug,true)}

__split

  • 作用:拆分字串
  • 入參:待拆分字串;變數名(使用變數名_x來訪問第x個拆分結果);分隔符
  • 示例:
${__split(test|is|intresting,para,|)}

__StringFromFile

  • 作用:從檔案中讀取內容,一行一行的讀取,讀完再從頭開始
  • 入參:檔案全路徑,變數名,多檔案讀取起止
  • 示例:
${__StringFromFile(D:\user_info.txt,info,,)}

__TestPlanName

  • 作用:獲取測試計劃名稱
  • 入參:無
  • 示例:
${__TestPlanName}

__threadNum

  • 作用:返回當前執行緒號
  • 入參:無
  • 示例:
${__threadNum}

__time

  • 作用:返回當前時間,可指定返回格式,由SimpleDateFormat類處理函式格式
    • 年:yyyy
    • 月:MM
    • 日:dd
    • 時:hh
    • 分:mm
    • 秒:ss
  • 入參:返回格式;變數名
  • 示例:
${__time(yyyy-MM-dd hh:mm:ss,)}

__timeShift

  • 作用:
  • 入參:
    • 格式:建立日期的格式。如果該值未被傳遞,則以毫秒為單位建立日期。
    • 日期:日期值
    • 移位:從日期引數的值中新增或減去多少天,幾小時或幾分鐘
      • “PT20.345S”解析為“20.345秒”
      • “PT15M”解析為“15分鐘”
      • “PT10H”解析為“10小時”
      • “P2D”解析為“2天”
      • “P2DT3H4M”解析為“2天,3小時和4分鐘”
      • “P-6H3M”解析為“-6小時+3分鐘”
      • “-P6H3M”解析為“-6小時-3分鐘”
      • “-P-6H + 3M”解析為“+6小時和-3分鐘”
    • 區域設定:設定建立日期的顯示語言
    • 變數名
  • 示例:
${__timeShift(yyyy-MM-dd HH:mm:ss,PT20.345S,,,c)}

__unescape

  • 作用:反轉escape字元
  • 入參:字元
  • 示例:
${__unescape(\r\n)}

__unescapeHtml

  • 作用:反轉URL連線中的Unicode編碼字元
  • 入參:字元
  • 示例:
${__unescapeHtml( )}

__urldecode

  • 作用:decode application/x-www-form-urlencoded字串
  • 入參:待decode字串
  • 示例:
${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+french)}

__urlencode

  • 作用:與urldecode
  • 入參:待encode字串
  • 示例:
${__urlencode(Word "school" is "école" in french)}

__UUID

  • 作用:獲取UUID
  • 入參:無
  • 示例:
${__UUID}

__V

  • 作用:獲取含變數名的表示式
  • 入參:含變數名的表示式
  • 示例:
${A1} - 可以正確訪問
${A${N}} - 無法訪問,巢狀變數
${__V(A${N})} - 可以訪問。A${N}變成A1,__V函式返回A1的值

__XPath

  • 作用:根據xpath獲取xml節點內容,沒有匹配到,則返回空字串
  • 入參:待解析的xml檔案;xpath表示式匹配xml節點
  • 示例:
${__XPath(/path/to/build.xml,//target/@name)}

可直接訪問變數

  • log:直接呼叫logger函式
  • ctx:獲取JMeterContent物件
  • vars:獲取JMeter定義的變數
  • props:獲取JMeter配置屬性
  • threadName:獲取Jmeter執行緒名
  • sampler:獲取Sampler例項
  • sampleResult:獲取SamplerResult例項
  • OUT:類似System.out.println, OUT.println()



原文連結:https://www.jianshu.com/p/c66b846e2ada