Заменить пробел с датой - PullRequest
       2

Заменить пробел с датой

1 голос
/ 01 марта 2020
String c = ${__timeShift(yyyy-MM-dd,,P10D,)}
log.info("Today date " + "${c}")
vars.put("DATE_PLUS_10", "${c}")
System.out.println("${c}");   ---- This is printing 2007
def response = prev.getResponseDataAsString()
log.info('Response Initial: ' + response)
def request = response.replaceAll('""', ${DATE_PLUS_10})
log.info('Response Massaged: ' + request)
vars.put('request', request)
//vars.putObject('request', 'request');
System.out.println(${request});

Мне нужно добавить 10 дней к текущей дате и заменить нулевое значение на DATE_PLUS_10

2020-02-29 20: 20: 15,548 ОШИБКА oajeJSR223PostProcessor: Проблема в сценарии JSR223, RESPONSE_STORE javax.script.ScriptException: groovy .lang.MissingMethodException: Нет подписи метода: org.codehaus. groovy .jsr223.GroovyScriptEngineImpl. $ () применимо для типов аргументов: (Script2 $ _run_closure1) значения: [Script2$_run_closure1@76fcaee5] Возможные решения: is (java .lang.Object), any (), get (java .lang.String), any (groovy .lang.Closure), use ([L java. lang.Object;), wait () в org.codehaus. groovy .jsr223.GroovyScriptEngineImpl.eval (GroovyScriptEngineImpl. java: 320) ~ [groovy -all-2.4.13.jar: 2.4.13] в org.codehaus. groovy .jsr223.GroovyCompiledScript.eval (GroovyCompiledScript. java: 72) ~ [groovy -all-2.4.13.jar: 2.4.13] в javax.script.CompiledScript.eval ( CompiledScript. java: 92) ~ [?: 1.8.0_181]

Может кто-нибудь, пожалуйста, скажите мне, в чем проблема в строке:

def request = response.replaceAll('""', ${DATE_PLUS_10})
String c = ${__timeShift(yyyy-MM-dd,,P10D,)} -

DATE_PLUS_10 = 2007 - это то, что показывает отладочный сэмплер ..

Ответы [ 4 ]

1 голос
/ 01 марта 2020

Не использовать ${} синтаксис в скрипте JSR223,

Вы можете добавить PreProcessor Параметры пользователя

Позволяет пользователю указывать значения для Переменные пользователя указывают c для отдельных потоков

Добавить переменную как DATE_PLUS_10 со значением:

  ${__timeShift(yyyy-MM-dd,,P10D,)}

Затем использовать ее в сценарии

 String c = vars.get("DATE_PLUS_10");
0 голосов
/ 02 марта 2020

Не включать встроенные функции JMeter или переменные в скрипты, вместо этого вы можете использовать раздел «Параметры», например:

enter image description here

или, если хотите, "чистый" Groovy код:

def newDate = new Date().plus(10).format('yyyy-MM-dd')

enter image description here

Дополнительная информация:

0 голосов
/ 01 марта 2020

Я попробовал ниже этот бобовый препроцессор.

import java.text.SimpleDateFormat; 
    import java.util.Date; 

    Date date = new Date(); 
    date.setDate(date.getDate()+10); 
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
    // or: SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy"); 
    String formattedDate = df.format(date); 
    vars.put("FUTUREDATE",formattedDate); 

И использовал постпроцессор JSR

def mydate =vars.get("FUTUREDATE");
log.info("my date" + mydate)
def response = prev.getResponseDataAsString()
log.info('Response Initial: ' + response)
def request = response.replaceAll('""', mydate)
log.info('Response Massaged: ' + request)
vars.put('request', request)
//vars.putObject('request', 'request');
System.out.println(${request});

Проблема решена.

0 голосов
/ 01 марта 2020

вы можете использовать глобальную или пользовательскую переменную, и после этого вы можете написать

def DATE_PLUS_10=vars.get("DATE_PLUS_10")
log.info(DATE_PLUS_10)
def response = "2020-05-01"//prev.getResponseDataAsString()
log.info('Response Initial: ' + response)
def request = response.replaceAll('""', DATE_PLUS_10)
log.info('Response Massaged: ' + request)

Как упоминалось в предыдущем ответе, вы не можете использовать $ {} внутри процессора JSR223.

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