Для своего отчета о тестах я использую фреймворк Allure, который позволяет мне прикрепить файл к тестуЯ также использую SpecFlow, поэтому я хочу прикрепить файл журнала к каждому шагу тестирования.И Allure позволяет мне это делать.
Тем не менее, я не могу понять, как это сделать правильно, когда мои тесты выполняются параллельно.
Итак, мне нужно , чтобы журнал каждого теста записывался в файл, который я могу обрабатывать независимо от других файлов журнала из тестов, которые выполняются параллельно .
До того, как я запускал тесты параллельно, у меня просто был такой класс:
public static class Log
{
private static readonly string LogFileName = "testlog.json";
public static bool IsFileExist => File.Exists(LogFileName);
public static void WriteLine(string value)
{
File.AppendAllText(LogFileName, value);
}
public static string GetLogPath()
{
return LogFileName;
}
}
Затем у меня был хук SpecFlow:
[AfterStep()]
public void AfterStep()
{
if (Log.IsFileExist)
{
string logFilePath = Log.GetLogPath();
AllureLifecycle.Instance.AddAttachment("displayedFileName", "application/json", logFilePath);
//Clean log file
DeleteTestLogFile();
}
}
Поэтому, как только файл журнала был прикреплен к моему отчету, я удалил его, и он снова был создан на следующем шаге.
Теперь, конечно, когда я запускаю тесты параллельно, к файлу нельзя получить доступ из нескольких потоков.
Как я могу справиться с этим?Может быть, я использую не очень хорошее решение вообще?Если да, то посоветуйте, пожалуйста, достаточный способ сделать то, что я хочу.