Включение фрагмента кода функции в файл groovy в скрипте JMeter groovy - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть большой скрипт Groovy в JMeter, и я хочу, чтобы несколько методов были повторно использованы в разных местах моего скрипта. Ниже я попробовал.

Это отличный сценарий, в котором я написал функцию, которую хочу вызвать из Jmeter.

Tools.groovy

public void AssertValuesF(float Expected, float Actual, String PassMessage, String FailureMessage){
        if(Expected==Actual){
                log.info("****Assertion Successful****");
                log.info("Actual: "+Actual+" Expected: "+Expected +"\n");
                log.info(PassMessage);

        }
        else{
              vars.put("AssertionFailure","true");             
            AssertionResult.setFailure(true);
            vars.put("FailureMsg",vars.get("FailureMsg") + "\n****ASSERTION FAILURE****** \n"+FailureMessage + " ||  EXPECTED: "+ Expected + " || ACTUAL: "+Actual + "\n"); 

          log.info("****ASSERTION FAILURE******");
         // AssertionResult.setFailureMessage("****Assertion Failure****** "+FailureMessage + " Expected: "+ Expected + " Actual: "+Actual+"\n");
           log.info(FailureMessage);               
            log.info("Actual: "+Actual+"Expected: "+Expected);
        }
    } 

Ниже приведен мой код JMeter Groovy, где я вызываю функцию.

    File sourceFile = new File("D://TestScript//Tools.groovy");
    Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(sourceFile);
    GroovyObject myObject = (GroovyObject) groovyClass.newInstance();
myObject.AssertValues("s","s","asdf","asdf");

Выход выдает эту ошибку, javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: log for class: Tools

Возможно, это связано с тем, что объект 'log' недоступен в Groovy. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 05 сентября 2018

log сокращение доступно только для элементов JSR223 , чтобы иметь возможность использовать его, вам нужно определить его вручную, как это сделано в JSR223TestElement class

Поэтому измените ваш код так:

import org.slf4j.Logger
import org.slf4j.LoggerFactory

public void AssertValuesF(float Expected, float Actual, String PassMessage, String FailureMessage) {
    final Logger log = LoggerFactory.getLogger(getClass());

    if (Expected == Actual) {
        log.info("****Assertion Successful****");
        log.info("Actual: " + Actual + " Expected: " + Expected + "\n");
        log.info(PassMessage);

    } else {
        vars.put("AssertionFailure", "true");
        AssertionResult.setFailure(true);
        vars.put("FailureMsg", vars.get("FailureMsg") + "\n****ASSERTION FAILURE****** \n" + FailureMessage + " ||  EXPECTED: " + Expected + " || ACTUAL: " + Actual + "\n");

        log.info("****ASSERTION FAILURE******");
        // AssertionResult.setFailureMessage("****Assertion Failure****** "+FailureMessage + " Expected: "+ Expected + " Actual: "+Actual+"\n");
        log.info(FailureMessage);
        log.info("Actual: " + Actual + "Expected: " + Expected);
    }
}

И вы сможете использовать его из скриптов Groovy по-своему:

JMeter Groovy Custom Assertion

Также имейте в виду, что есть свойство groovy.utilities, которое можно использовать для повторного использования пользовательских сценариев в функции __ groovy () , вам нужно будет либо добавить следующую строку пользователю . свойства файл:

groovy.utilities=D:/TestScript/Tools.groovy

или передать его через -J аргумент командной строки например:

jmeter -Jgroovy.utilities=D:/TestScript/Tools.groovy -n -t test.jmx -l result.jtl

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...