2017-02-21 13 views
0

У меня есть этот код в моем Beanshell постпроцессореJmeter BeanShell - Доступ к данным ответа - Ошибка Beanshell?

String line; 
String[] words; 

line = SampleResult.getResponseMessage(); log.info(msg); 

words = line.split("*"); 

log.info("Here We are"); 

for (int i = 0; i < words.length; i++) { 
    log.info(words[i]); 
} 

Это ошибка, я получаю

2017/02/21 14:23:31 ОШИБКИ - jmeter.util.BeanShellInterpreter: Ошибка вызов метода bsh: eval Файл с исходными кодами: встроенная оценка: String line; String[] words; line = SampleResult.getResponseMessage(); log.inf . . . '' : Attempt to resolve method: getResponseMessage() on undefined variable or class name: SampleResult 2017/02/21 14:23:31 WARN - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: Строка; String [] слов; line = SampleResult.getResponseMessage(); log.inf. , , «»: Попытка разрешить метод: getResponseMessage() на неопределенное имя переменной или класса: SampleResult

+0

Откуда вы получаете 'SampleResult'? потому что, если вы читаете ошибку, ее более или менее говорят: «Я не знаю, что такое« SampleResult ». – TehTris

ответ

1

Строго говоря, чтобы избавиться от ошибки, вам необходимо заменить SampleResult с prev.

пред - (SampleResult) - дает доступ к предыдущим SampleResult

(source)

Так разрешить исключение:

line = prev.getResponseMessage(); 
log.info(line); 

Вы всегда можете увидеть список переменные объекты дают вам в самом объекте:

enter image description here

Однако, если я правильно понимаю, что вы хотите получить данные и не сообщение ответа из пробоотборника. Таким образом, вы можете использовать getResponseDataAsString() вместо getResponseMessage()

Так все вместе:

line = prev.getResponseDataAsString(); 
log.info(line); 
0
  1. SampleResult является то, что вы можете использовать этот способ
  2. ResponseMessage!= Response Body

Так используйте один из следующих подходов

  • line = new String(data);
  • line = prev.getResponseDataAsString();
  • line = ctx.getPreviousResult().getResponseDataAsString());

Где:

  • data является byte array, содержащий двоичное представление данных ответа родительского Sampler
  • prev является обобщающим для текущего экземпляра SampleResult класса
  • ctx - означает JMeterContext

Также рекомендуется использовать JSR223 PostProcessor и Groovy language вместо Beanshell, как Groovy более совместим с Java, работает лучше и имеет приятные языковые функции, которые заставят ваш код выглядеть и работать лучше. См. Статью Groovy Is the New Black.

Смежные вопросы