簡體   English   中英

Jmeter:groovy 腳本中 jmeter 對象的包裝器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM