То, как я обрабатывал отчетность в своем приложении, соответствует тому, что сказал Ковачич.
Я также использовал ExtentReports как способ создания метрик и пошаговую запись того, что произошло.
Я создал метод, отвечающий за запись шага (щелкнул по нему, переместился туда, подтвердив это ...) с возможностью сделать снимок экрана, если это необходимо, и еще один для запуска нового теста.
Затем нужно вызывать эти методы в среде тестирования стиля PageObject и в значительной степени вызывать их при каждом действии, выполняемом вашей средой.
Чтобы лучше проиллюстрировать, вот несколько примеров реализации (c #):
Метод записи шага
public void LogStep(Status status,string MessageToLog, bool hasScreenshot)
{
//we leave the possibility of taking the screenshot with the step or not
if (hasScreenshot)
{
Test.Log(logstatus, messageToLog)
.AddScreenCaptureFromPath(GetScreenshot());
}
else
Test.Log(logstatus, messageToLog);
}
Способ захвата скриншота
public static string GetScreenshot()
{
ITakesScreenshot ts;
//Browser.Driver here is the instance of the Driver you want to take screenshots with
ts = (ITakesScreenshot)Browser.Driver;
var screenshot = ts.GetScreenshot();
// Here just input the name you want your screenshot to have, with path
var screenshotPath = ScreenShotFolder + @"\" + _screenshotcount + ".bmp";
screenshot.SaveAsFile(screenshotPath);
// I've introduced a variable to keep track of the screenshot count (optional)
return (ScreenShotFolder.Substring(_reportRoot.Length) +"/"+ _screenshotcount + ".bmp");
}
Пример вызова в рамках
public void BlockAccount()
{
try
{
_blockAccBtn.Click();
_confirmBtn.Click();
ExtentReportGenerator.LogStep(Status.Info, "Blocking Account");
}
catch (NoSuchElementException)
{
ExtentReportGenerator.LogStep(Status.Fail, "Could not find block button", true);
}
}
NunitTest с использованием всей системы
[TestCase, Order(1)]
public void CanBlockCard()
{
//Creates a new test in the report
ExtentReportGenerator.Test = ExtentReportGenerator.Extent.CreateTest(GetCurrentMethod());
//Each one of these calls to the framework has logged steps
CashlessPages.CashlessAffiliationsPage.AccessAccount(1, 1);
CashlessPages.CashlessAccountsPage.BlockAccount();
Assert.IsTrue(CashlessPages.CashlessAccountsPage.IsAccBlocked());
}
Пример сгенерированного отчета
Надеюсь, это поможет