У меня есть план тестирования, где у меня есть две группы потоков, первая группа потоков будет запущена и запишет результат в файл, зарегистрированный файл будет входом для второй группы потоков.Теперь, для этого в группе потоков я добавил скрипт BeanShell PostProcessor следующим образом, но он работает следующим образом:
- , откройте jmeter и запустите план тестирования (файл журнала "testing.csv" будет создан какfresh)
- В первый раз свойство isHeaderWritten имеет значение false.
- Нет, не закрывая и не открывая заново jmeter, снова запустите скрипт.я ожидаю, что файл журнала «testing.csv» должен быть обрезан и добавить значения заново.Но в действительности файл «testing.csv» добавляется с новыми значениями.
- Теперь закройте jmeter и снова откройте, на этот раз файл журнала «testing.csv» будет усечен, а новые новые значениядобавлено.
Как очистить файл и перезаписать записи для каждого прогона (без закрытия jemeter)
import org.apache.jmeter.util.JMeterUtils;
threadName=ctx.getThread().getThreadName();
log.info("threadName: "+threadName);
isHeaderWritten = JMeterUtils.getPropDefault("isHeaderWritten","false");
fileName="C:\\response\\testing.csv";
log.info("isHeaderWritten: "+isHeaderWritten);
if(isHeaderWritten == "true"){
f = new FileOutputStream(fileName, true);
fileHeader = "requestStatus,cNumber,pId,id,token";
}else{
log.error("isHeaderWritten:"+isHeaderWritten);
f = new FileOutputStream(fileName, false);
fileHeader = "requestStatus,cNumber,pId,id,token";
}
p = new PrintStream(f);
this.interpreter.setOut(p);
if(isHeaderWritten == "false"){
print(fileHeader);
JMeterUtils.setProperty("isHeaderWritten", "true");
}
log.info("Test results will be written to file "+fileName);
cNumber=vars.get("cNumber");
log.info("cNumber"+cNumber);
pId = vars.get("pId");
log.info("pId"+pId);
pmId = vars.get("pmId");
log.info("pmId"+pmId);
tTxt = vars.get("tTxt");
log.info("tTxt"+tTxt);
responseCode=prev.getResponseCode();
log.info("responseCode of "+requestString+ " is "+responseCode);
requestStatus = "Success";
if(!"201".equals(responseCode)){
requestStatus = "Failure"+","+cNumber+","+pId+","+pmId+","+tTxt;
}
result = requestStatus;
if("Success".equals(requestStatus)){
responseData=new String(data);
log.info("responseData of "+requestString+ " is "+responseData);
requestString=requestStatus+","+cNumber+","+pId+","+pmId+","+tTxt;
result = requestString;
log.info("result"+result);
}
log.debug(result);
print(result);
f.close();