#jmeter #beanshell
#jmeter #beanshell
Вопрос:
В моем скрипте JMeter есть 2 шага. Вход в систему и второе получение заказов, внутри группы потоков входа в систему я использую утверждение bean shell для проверки нескольких условий, и как только я сталкиваюсь с ошибкой, я записываю ошибку в файл журнала. Итак, для первого потока он записывает его правильно, но когда он достигает следующего утверждения, он перезаписывает тот же файл без добавления его.
Первое утверждение:
import org.apache.jmeter.assertions.AssertionResu<
String failureMessage = "";
String successMessage = "";
String ResCode =SampleResult.getResponseDataAsString();
if (!ResCode.contains("Admin") )
{
failureMessage = "Got Response Code" ResCode;
log.warn("Creation of a new record failed: Response code " ResCode);
AssertionResult result = new AssertionResult("Expected Response 200");
result.setFailure(true);
result.setFailureMessage(failureMessage);
prev.addAssertionResult(result);
prev.setSuccessful(false);
SampleResult.setStartNextThreadLoop(true);
}
else {
successMessage = "Got Response Code" ResCode;
log.info("----->" successMessage);
FileOutputStream logfile = new FileOutputStream(vars.get("LogFile"));
PrintStream printtoFile = new PrintStream(logfile);
printtoFile.println( successMessage );
printtoFile.close();
logfile.close();
}
Второе утверждение:
import org.apache.jmeter.assertions.AssertionResu<
String failureOrderMessage = "";
String successOrderMessage = "";
OrderId = vars.get("workOrderId");
log.info("----->" OrderId);
if (OrderId == null){
failureOrderMessage = "The Order Id :" OrderId;
log.info("----->" failureOrderMessage);
FileOutputStream logfile = new FileOutputStream(vars.get("LogFile"));
PrintStream printtoFile = new PrintStream(logfile);
printtoFile.println( failureOrderMessage );
printtoFile.close();
logfile.close();
}
else {
successOrderMessage = "Getting few order id";
log.info("----->" successOrderMessage);
}
Приведенное выше утверждение работает нормально, но каждый раз, когда оно перезаписывает файл журнала, я хочу его добавить.
Второй
FileOutputStream logfile = new FileOutputStream(vars.get("LogFile"));
PrintStream printtoFile = new PrintStream(logfile);
printtoFile.println( successMessage );
printtoFile.close();
logfile.close();
Нужно ли мне каждый раз объявлять приведенный выше фрагмент кода для записи в файл журнала?
Ответ №1:
Вам необходимо создать FileOutputStream с флагом добавления:
FileOutputStream logfile = new FileOutputStream(vars.get("LogFile"), true);
добавить — если true, то байты будут записаны в конец файла, а не в начало
Комментарии:
1. Это сработало, еще одно, нужно ли мне объявлять
PrintStream printtoFile = new PrintStream(logfile); printtoFile.println( successMessage ); printtoFile.close(); logfile.close();
каждый раз, когда мне нужно записывать в файл, есть ли способ, которым я могу объявить один раз и вызвать этот метод?