Selenium: как создать отчет о результатах испытаний с NUnit - PullRequest
0 голосов
/ 08 мая 2018

Мне было интересно, как можно создать надлежащее доказательство испытаний Selenium UI.

Я думал о скриншотах, но они на самом деле не охватывают все, что вы сделали, так как трудно определить, когда делать скриншоты. (Каждый клик или каждое ожидание или каждая загрузка страницы).

Еще одна опция, о которой я подумал, - это запись экрана, но это затрудняет работу с параллелизмом, поскольку вы записываете весь экран, а не конкретное окно Chrome.

Однако вы также можете снимать скриншот каждую секунду через веб-драйвер и превращать его в видео. Тогда нужно будет работать с отдельным потоком, что может быть довольно сложным, учитывая условие, которое вы должны предоставить, чтобы поток не делал скриншоты. В противном случае тест будет выполняться вечно.

Поскольку я не смог сделать убедительный вывод, основанный на моих собственных мыслях о создании отчета о результатах испытаний для тестов пользовательского интерфейса, я надеялся, что кто-нибудь сможет объяснить мне, как правильно это сделать.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

То, как я обрабатывал отчетность в своем приложении, соответствует тому, что сказал Ковачич. Я также использовал 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());
    }

Пример сгенерированного отчета

Example of generated Report ExtentReports

Надеюсь, это поможет

0 голосов
/ 08 мая 2018

У меня была похожая проблема, и я представил в своей среде автоматизации сервер ExtentReports + klov с Testrail в качестве инструмента для управления тестированием.

Я думаю, что никто не попросил бы вас показать тестовые примеры с помощью видео или скриншота, но если это необходимо, вы можете проверить несколько библиотек для съемки «видео», потому что это не реальное видео, а скорее набор скриншотов, которые смешиваются в одном видео.

То, что на самом деле показало действительно хорошие затраты времени, - это сделать скриншот с падшими тестовыми примерами и прикрепить его к результату тестового набора (Testrail, Bugzila, Extentreports независимо от того, что).

На самом деле, если вы используете селен / аппиум. [https://github.com/groupon/Selenium-Grid-Extras] они создают «видео», как упомянуто, и хранятся в локальном хабе / узле.

Но лучшим методом, который был действительно хорошим методом, был отчет с подробным описанием шагов каждого теста:

Тестовый скриншот с подробными шагами и действиями: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...