С#+WebDriver+NUnit 3 интеграция с Allure 2 Framework

Использую C# , Nunit, Selenium
В тест добавлен обычный assert

 
var lblcustomer = Assembly.txtCustomer.GetAttribute("value");
try
                   {                      Assert.AreEqual(parameters.EnterParams.customer, lblcustomer);
                       log.Add(string.Format("Ok.   Expected customer name is {1}, original customer name is {0}",
                             lblcustomer,
                          parameters.EnterParams.customer));
                  }
                    catch (Exception)
                     {
                         log.Add("Nok.   The customer name is wrong: " + lblcustomer);
}

В режиме Debug тест проходит без ошибок и значение
В режиме Release :

Message: Expected string length 17 but was 0. Strings differ at index 0.
Expected: “CompanyForRelease”
But was: <string.Empty>

PS
Сорри что в это теме, но новую тему не могу создать никак 2018-09-10_1132

А зачем try/ catch с ассертом… Думаю что value не успевает прогрузится в lblcustomer. Попробуй убрать трай кетч и добавь Thread.sleep(2000) перед ним - только на время проверки теории.

1 лайк

Потому что у меня десяток асертов и не хочется что бы на первом все закончилось. Ок, спасибо попробую добавить ожидание.

Для этого есть волшебная штука Assert.Multiple :wink:

1 лайк

Поддерживаю @unickq
Assert.Multiple(() =>
{
Assert.That…
Assert.That…
Assert.True…
});

1 лайк

А я предложу вам вот это:

1 лайк

Спасибо большое за ваш труд. Отчеты получаются просто произведение искуства :slight_smile:
У меня воззник один один вопрос. В старой реализации тестов , я записывала так же результаты прохождения в файл. Тесты достаточно большие (end-to-end) сценарии, упрощала как могда, но все же.
Т.е я записывала в файл некоторую полезную информацию. Например:

log.Add(string.Format(
                            "product parameters: par1:{0} par2: {1}, par3: {2}",
                            par1,
                            par2, par3));

Внитри AllureLifecycle.Instance.RunStep есть возможность добавить нечто подобное?

Вы можете делать что угодно внутри RunStep.

AllureLifecycle.Instance.RunStep("Logging parameters",
                () =>
                {
                    // some code here
                    log.Add(string.Format(
                            "product parameters: par1:{0} par2: {1}, par3: {2}",
                            par1,
                            par2, par3));
                });

Да, я понимаю что могуи так у меня сейчас и работает. Но я бы хотела уйти от записи в файл и переместить все в репорт.

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

AllureLifecycle.Instance.RunStep($"product parameters: par1: {par1} par2: {par2}, par3: {par3}", () => {});
1 лайк

Давно не писала, так как была увлечена добалением Allure во все 100500 тестов, а это не быстро. Очень радует появление красивого понятного отчета.
И конечто же появились трудности и вопросы.

  1. Шаги [SetUp] и [TearDown] не появляются в репорте.
  2. Тест можно привязать к Issue [AllureIssue(“US:292738”, link] 2018-09-27_1008
    но хотелось бы привязывать также к Story. Т.е. я пока сделала что это User Story + номер, и линк в беклоге. Так же BUG + номер, и линк в беклоге.
  3. Генерация отчета. Сделала отчень топорно, но пока так. В начале все как обычно: get sourses, nuget restore, msbuild, vstest run, а даааальше powershell, который запускает allure serve path и собирает из папки все для отчета и генерит.
  4. Хочется видеть историю 2018-09-27_1024 . Тесты запускаются каждую ночь и история запусков поможет отслеживать стабильность тестов.
  5. Запись видео. Планируется ли в ближайшем будущем? Иногда очень нужно.
  6. Возможно ли сделать выгрузку в html формат?

Отвечу по пунктам:

  1. Это было добавлено в сборке NuGet Gallery | Noksa.NUnit.Allure 3.2.0, шаги не только из Setup и TearDown, но и из OneTimeSetup/OneTimeTearDown добавляются в отчёт.
  2. Здесь я не очень понял, что вы хотите. Можно поподробнее?
  3. Я уже писал много раз, что хорошим вариантом для развертывания отчётов, как и запуска тестов, является использование CI/CD, например Jenkins.
  4. См п. 3. Jenkins умеет хранить историю тестов из коробки.
    Добавлять это к ручным запускам из IDE я пока не вижу смысла.
  5. За запись видео должна отвечать ваша архитектура. Я могу лишь порекомендовать использовать связку Ggr - Selenoid для этого, т.к. используя их можно записывать видео при параллельных веб-тестах на одном хосте с каждого браузера.
  6. Это вам к разработчикам Allure Framework · GitHub но по-моему юзлесс кейс.
1 лайк

Отвечу также по пунктам:

  1. Setup добавлен но в отчете не появляется
[SetUp]
        public void InitializeTest()
        {};
  1. Все тесты сейачс with defect потому-что https://www.screencast.com/t/uSguiBqMD7 слинкованы с якобы багами (как я поняла). Но на самом деле я использую эти линки для бытсрого перехода на ЮС и связанные мануальные тесты.
      1. Мне не подходит Jenkins, у меня tfs
  2. Спасибо, но идея была записывать видео и добавлять линк в отчет. Но это не критично, просто “хорошо бы иметь”
  3. В моем случае да, но бывают таки продукты, когда необходима даже печать и подпись отчетов. В таком случае выгрузка результатов с картинками была бы просто находкой
  1. У вас нет шагов в методе. Поэтому нет их и в отчёте.
  2. Да, потому что атрибут AllureIssue добавляет subsuite с дефектами. В последней версии был добавлен атрибут AllureLink, используйте его - он просто добавит ссылки в кейс.
  3. Ну здесь я не могу ничего сказать, я с tfs не знаком. Если вы подробнее расскажете, как там всё происходит - подумаем как это реализовать.
  4. Вам ничто не мешает записывать видео и добавлять его в отчёт. Там будет не просто линк, там можно будет его даже смотреть. Собственно, в своём фреймворке я так и делаю:

Но, повторюсь, запись видео и его прикладывание к отчёту лежит на ваших руках, а не на аллюре.

1 лайк
  1. Шаги есть. Решила не вставлять простыню. Приблизительно такое:
[SetUp]
        public void InitializeTest()
{
//Start
            PropertiesCollection.OpenApp();


            AllureLifecycle.Instance.SetGlobalActionInException(() =>
            {
                AllureLifecycle.Instance.AddAttachment("Test is failed here", AllureLifecycle.AttachFormat.ImagePng,
                    PropertiesCollection.Driver.TakeScreenshot().AsByteArray);
            });

};
  1. Это абсолютно то что нужно :slight_smile:
  2. В двух словах не расскажу. Соберусь с силами и опишу процесс.
  3. Ggr - [Selenoid] на сколько я помню под java. Тогда я подумаю как записать видео, а добавить в отчет думаю не сложнее чем присунок.
  1. Это не шаг :slight_smile: Это настройка. Поэтому не отображается)

  2. Нет, Селенойд подо всё. Там где есть селениум - там вы можете прикрутить селенойд.

1 лайк

А тесты где у вас бегут? Где браузер запускается? Где вы храните build history?

  1. Тесты запускаются на билд машине.
  2. Там же запускается браузер.
  3. Вот история запуска. Я пропустила многотичием не существенные моменты в логе

Search folder : E:\Bld\A1\128\s
Run settings file : E:\Bld\A1\128\s

Run the tests locally using vstest.console.exe

Starting test execution, please wait…
Information: NUnit Adapter 3.10.0.21: Test execution started
Information: Running all tests in E:\Bld\A1\128\s\MAutoTests\TestOriginal\bin\Debug\TestOriginal.dll
Information: NUnit3TestExecutor converted 148 of 148 NUnit test cases


Results File: E:\Bld\A1\128\s\TestResults\svcTFSBuild_BLDV13 2018-09-28 03_06_35.trx

Publishing test results to test run ‘436403’
Test results remaining: 148. Test run id: 436403

Published Test Run : https://tfs.company.net/tfs/companySW/MTests%20CS/_TestManagement/Runs#runId=436403&_a=runCharts

Плагина для TFS походу пока нет. Вот feature request Allure plugin for TFS · Issue #612 · allure-framework/allure2 · GitHub
Мне кажется вам все-таки стоит подумать о Jenkins для прогонки ваших тестов

Для отображения истории в алюр вам необходимо использоватьодин из следующих CI