Jmeter-JSR223常用腳本

數(shù)據(jù)獲取相關(guān)

接口請求后置

import groovy.json.JsonSlurper // 導(dǎo)入json解析模塊

requestName = prev.getSampleLabel() // 獲取請求的名稱
responseCode = prev.getResponseCode() // 獲取請求的響應(yīng)碼
responseHeader = prev.getResponseHeaders() // 獲取請求的headers信息
responseDataStr = prev.getResponseDataAsString() // 以string的形式返回請求結(jié)果
jsonSlurper = new JsonSlurper() // 生成一個json對象
jsondata = jsonSlurper.parseText(responseDataStr) // json對象數(shù)據(jù)化,可以通過key值獲取對應(yīng)value

log.info("------------------------------")
log.info("requestName: " + requestName)
log.info("responseCode: " + responseCode)
log.info("responseHeader: " + responseHeader)
log.info("responseDataStr: " + responseDataStr)
log.info("jsondata_relay_id: "+ jsondata["relay_id"]) 
log.info("------------------------------")

解析SQL查詢

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

jsonString = JsonOutput.toJson(vars.getObject("data")) // 數(shù)據(jù)轉(zhuǎn)json字符串
jsonSlurper = new JsonSlurper()
jsondata = jsonSlurper.parseText(jsonString) // json對象數(shù)據(jù)化,可以通過key值獲取對應(yīng)value

斷言相關(guān)

responseCode = prev.getResponseCode() // 獲取請求的狀態(tài)碼
if (responseCode == "200") { // 對狀態(tài)碼進行斷言 判定是否是200
    AssertionResult.setFailure(false) // 斷言成功
} else {
    AssertionResult.setFailure(true) // 斷言失敗
    AssertionResult.setFailureMessage("response Code is not 200") // 輸出斷言失敗對應(yīng)的信息
}

線程相關(guān)

// 獲取線程總數(shù)的方法
num1 = ctx.getThreadGroup().getNumThreads() // JSR223腳本
num2 = ${__groovy(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads())} // 函數(shù)調(diào)用
num3 = ${__groovy(ctx.getThreadGroup().getNumThreads(),)} // 組合使用

currentThread = ${__threadNum} // 獲取當前線程號

Cookie相關(guān)

import org.apache.jmeter.protocol.http.control.Cookie
import org.apache.jmeter.protocol.http.control.CookieManager

cookieManager = sampler.getCookieManager()
size = cookieManager.getCookies().size()
for (i in 0..<size) {
    def cookie = cookieManager.get(i)
    if ("COOKIENAME" == cookie.getName()) {
        vars.put("sessionName", cookie.getName())
        vars.put("sessionValue", cookie.getValue())
        vars.put("sessionDomain", cookie.getDomain())
        vars.put("sessionPath", cookie.getPath())
    } else {
        log.error("-------Cookies : " + cookie.getName() + "----------- " + cookie.getValue())
    }
}

數(shù)據(jù)存儲相關(guān)

property全線程共享數(shù)據(jù)

import org.apache.jmeter.util.JMeterUtils

JMeterUtils.setProperty("key", "value")  // 僅支持string類型數(shù)據(jù) 
JMeterUtils.getProperty("key")

vars局部變量,僅在當前線程組生效,可以通過${key}調(diào)用

responseCode = prev.getResponseCode()
vars.put("login_status", responseCode) // 設(shè)置
code = vars.get("login_status") // 讀取

props全局變量,可以通過${key}調(diào)用

vars.props("token", "${token}") // 設(shè)置
token = props.get("token") // 讀取

ps:因Jmeter中的線程組默認是并行的,所以如果全局變量依賴某個線程處理后的結(jié)果,需要在測試計劃中額外設(shè)置獨立運行


設(shè)置后所有線程組為順序執(zhí)行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容