[英]Jmeter: wrapper for jmeter obects in groovy script
H,我在 JSR223 斷言中有這樣的代碼
import groovy.json.JsonSlurper;
import org.apache.jmeter.services.FileServer;
failureMessage = "";
sampleLabel = SampleResult.getSampleLabel();
isResponseCodeCorrect("204");
def isResponseCodeCorrect(String expCode)
{
String actualCode = prev.getResponseCode();
if(!expCode.equals(actualCode)){
failureMessage += "ERROR code: Expected <"+ expCode +"> but we got instead " + actualCode + ";";
}
}
問題是可以在 groovy 或 java 中創建一些代碼庫並注入對象形式執行的采樣器(如公共變量:ctx、vars、props、SamplerResult)?
目標是注入像 SampleResult、AssertionResult(調用 -> SampleResult.getSampleLabel())、AssertionResult.setFailureMessage("failureMessage); AssertionResult.setFailure(true); )和自己的函數之類的對象。
喜歡讓包裝器(某個對象)與方法一起玩斷言,將數據保存到 CSV ......包裝器將被導入到 JSR223 斷言,然后我想調用一些特定的方法。
預期的包裝器:
@groovy.transform.MapConstructor
class Foo {
SampleResult results,
AssertionResult assertionResult
isResponseCodeCorrect(String expCode) {
String actualCode = prev.getResponseCode();
if(!expCode.equals(actualCode)){
failureMessage += "ERROR code: Expected <"+ expCode +"> but we got instead " + actualCode + ";";
assertionResult.setFailureMessage(failureMessage);
assertionResult.setFailure(true);
log.error(sampleLabel + " Error is going to be saved to the logs");
PrintLogToFile();
}
}
}
JSR223 斷言:
import org.foo. wrapper
Foo wrapper = new Foo();
wrapper.isResponseCodeCorrect("200");
或者一些有用的東西來避免調用之間的代碼重復
您可以將 Groovy 或 Java 代碼編譯為.jar 文件並將其放入JMeter Classpath
完成后,您將能夠從任何JSR223 測試元素和/或從__groovy() 函數訪問 .jar 文件中可用的函數。
我只能想到一個你需要的類: JMeterContext一個實例可以像這樣簡單地獲得:
def ctx = org.apache.jmeter.threads.JMeterContextService.getContext()
完成后,您將能夠訪問您需要的任何內容,例如:
SampleResult
== ctx.getPreviousResult()
AssertionResult
== ctx.getPreviousResult().getAssertionResults()
vars
== ctx.getVariables()
props
== ctx.getProperties()
如果需要,請查看如何使用 JAR 文件重用 JMeter 代碼和節省時間一文了解更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.