Невозможно добавить к следующей строке в файле через пробоотборник утверждений beanshell в Jmeter

#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(); каждый раз, когда мне нужно записывать в файл, есть ли способ, которым я могу объявить один раз и вызвать этот метод?