Jmeter: оболочка для объектов jmeter в сценарии groovy - PullRequest
0 голосов
/ 17 февраля 2020

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 и добавить объекты в исполняемый образец (например, publi). c переменные: ctx, vars, props, SamplerResult)?

Цель состоит в том, чтобы внедрить такие объекты, как SampleResult, AssertionResult (чтобы вызвать -> SampleResult.getSampleLabel ()), AssertionResult.setFailureMessage ("faultMessage); AssertionResult.setFailure (true);) и собственные функции.

Хотелось бы иметь оболочку (некоторый объект) с методами для воспроизведения с Assertion, сохраняя данные в CSV ... Оболочка будет импортирована в JSR223 Assertion, а затем я хотел бы вызвать некоторые специфические c методы .

Ожидаемая оболочка:

 @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");

Или некоторые полезные вещи, чтобы избежать дублирования кода между вызовами

1 Ответ

0 голосов
/ 18 февраля 2020

Вы можете скомпилировать код Groovy или Java в .jar файл и перетащить его в JMeter Classpath

Как только вы это сделаете, вы сможете для доступа к функциям, доступным в файле .jar, из любого тестового элемента JSR223 и / или из __ groovy () функция .

Я могу думать только об одном классе, который вам нужен: JMeterContext экземпляр которого можно получить так же просто, как:

def ctx = org.apache.jmeter.threads.JMeterContextService.getContext()

как только вы это сделаете, вы сможете чтобы получить доступ ко всему, что вам нужно:

  • SampleResult == ctx.getPreviousResult()
  • AssertionResult == ctx.getPreviousResult().getAssertionResults()
  • vars == ctx.getVariables()
  • props == ctx.getProperties()
  • et c.

Извлечение Как повторно использовать код JMeter с файлами JAR и сэкономьте время статья для более подробной информации, если это необходимо.

...