Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

csharp
nunit
infrastructure
webdriver
allure
Теги: #<Tag:0x00007f7b68d276f8> #<Tag:0x00007f7b68d27518> #<Tag:0x00007f7b68d27310> #<Tag:0x00007f7b68d27180> #<Tag:0x00007f7b68d26fa0>

#1

Всем привет! Использую C#+WebDriver+NUnit 3+Allure 2. У меня вопрос по поводу получения отчетов с помощью Allure 2 с использованием NUnit 3. Я по началу попробовал интегрировать NUnit 2 с Allure и с этим не было проблем, там все просто, в директорию NUnit 2 кидаешь определенные файлы Allure и отчеты создаются после запусков тестов, при этом в код тестов ты ничего для этого не прописываешь.

Проблемы начались с интеграцией NUnit 3 с Allure (метод с Nunit 2 сюда не применить), а интеграции с NUnit 3 у Allure нет. Нашел инфу по интеграции с C# https://github.com/allure-framework/allure-csharp , после установки Install-Package Allure.Commons -Version 2.2.0.7 в свой проект и запусков тестов, у меня не создается папка allure-results с результатами тестов. SpecFlow Adapter я не рассматривал, тк не работал с реализацией SpecFlow.

Каким образом, проще всего, используя C#+NUnit 3+Allure2, можно получать отчеты по тестам? Спасибо!


(Aliaksandr Semianiuk) #2

На гитхабе кто-то выкладывал кастомный адаптер для nunit3. Вроде бы ник автора - unickq. У меня как-то получалось построить отчёт с его помощью, но потом обновился то ли nunit, то ли сам этот адаптер - и все отвалилось. Пытался разобраться, но в итоге забил и перешёл на другую репортинговую систему.


#3

Да, все верно, нашел доработку хорошего человека https://github.com/unickq/allure-nunit , установив ее получилось сделать отчет, но официального allure 2 под nunit нет и не знаю будет ли, так что буду переквалифицироваться на Java, с ней на много меньше гемора.


(Lelik) #4

Я тоже неделю билась с настройкой репортов под nunit3. Пока никак. Какой другой тут для репортов взяли?


#5

Как написал выше использовал доработку https://github.com/unickq/allure-nunit установка пакета через Nuget https://www.nuget.org/packages/NUnit.Allure , далее созданный файл в корне проекта allureConfig.json кидаем в папку с dll (bin/Dubug), можно в allureConfig.json изменить директорию создания отчетов, а по умолчанию они создаются в виде json файлов в C:\Users\PC-name\allure-results. Далее чтобы сгенерить отчет в виде нормального html отчета качаем allure-2.5.0.zip (https://bintray.com/qameta/generic/allure2/2.5.0 или версию выше если есть) кидаем его в C:\allure\ , потом в папке C:\allure\allure-2.5.0\bin запускаем командную строку и набираем allure serve C:\Users\PC-name\allure-results и у нас открывается отчет в браузере. Написал подробно, тк мне самому иногда хочется, чтобы люди писали на русском языке так, это сильно экономит время :wink:


(Aliaksandr Semianiuk) #6

Попробуйте reportunit, мне очень даже зашёл.


(Aliaksandr Semianiuk) #7

А главное, отчёт билдится гораздо проще, и чтобы разобраться - у меня минут 10 ушло от силы.


(Aliaksandr Semianiuk) #8

Официально они сказали, что не будут поддерживать allure под .net и отдают поддержку на волю комьюнити.


(Анастасия Гурьянова) #9

Я использую Extent Reports вместо Allure для NUnit 3


(Nick) #10

Единсвенная проблема на данный момент - нет возможности прикручивать аттачменты через teardown.


(Alexandr D.) #11

Я форкнул проект из поста выше и допилил его, теперь в нем можно:

  1. прикручивать аттачменты/шаги в setup и teardown
  2. Использовать добавление шагов/аттачей, если вы запускаете что-то параллельно в рамках теста, например, через Task.Run.

Поясню:
По дефолту, в аллюре storage хранится как ThreadStatic и как следствие, при запуске таски он оказывается пустым и выкидывается исключение, что значение key не может быть неопределённым.
Не знаю почему об этом никто не пишет, но такая проблема есть в аллюре, и думаю что не только на шарпе.

Единственное, я пока убрал атрибуты аллюра, кроме базового. Т.е. нельзя задать описание, тэг, стори и так далее. Сами атрибуты доступны, но не оказывают никакого влияния.

Если это кому-то нужно, я могу допилить атрибуты и выложить.
Проверял только на NUnit, работоспособность со SpecFlow не гарантируется.


(Lelik) #12

Я все таки решила еще раз попробовать прикрутить Allur reports к проекту.
Подскажите кто сталкивался с таким https://www.screencast.com/t/aZ3NoHg5aYc


(Alexandr D.) #13

Ошибка вроде сама за себя говорящая.
Какая у вас версия NUnit стоит?


(Lelik) #14

Я тоже об этом думала, но 3.9.0 удалился, когда распаковывался пакет, а 3.10.1 добавился https://www.screencast.com/t/5nwcEx8HD
Подозреваю проблема в другом и что с этим делать?
https://stackoverflow.com/questions/20660999/the-type-is-defined-in-an-assembly-that-is-not-referenced-how-to-find-the-cause
https://github.com/dotnet/roslyn/issues/14756


(Alexandr D.) #15

Посмотрите в app.config, там dependentAssembly с nunit должен быть.

Я использую свою сборку аллюра, у меня такой проблемы нет CSharp Allure classic NUnit with improvements


(Lelik) #16

Нету. А что нужно добавить, я думала он автоматичсеки добавится. https://www.screencast.com/t/IKgqv2jLKsk


(Alexandr D.) #17

Попробуйте добавить:

<dependentAssembly>
        <assemblyIdentity name="nunit.framework" publicKeyToken="2638cd05610744eb" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.10.1.0" newVersion="3.10.1.0" />
      </dependentAssembly>

(Lelik) #18

Выяснилось что не смотря на распаковку из нугетпакета, версия все равно была 2.6. Пришлось удалить все что связано с nunit и установить заново. Теперь все ок https://www.screencast.com/t/11uHngBAC9


(Lelik) #19

А где найти allure-results ?

У класса [AllureNUnit] есть
Тест методу добавлено все что только можно
[Test(Description = “XXX”)]
[NUnit.Allure.Attributes.AllureTag(“TC-1”)]
[NUnit.Allure.Attributes.AllureSeverity(SeverityLevel.critical)]
[NUnit.Allure.Attributes.AllureIssue(“ISSUE-1”)]
[NUnit.Allure.Attributes.AllureTms(“TMS-12”)]
[NUnit.Allure.Attributes.AllureTms(“TMS-12”, “http://asd.com”)]
[NUnit.Allure.Attributes.AllureOwner(“unickq”)]
[NUnit.Allure.Attributes.AllureSuite(“PassedSuite”)]
[NUnit.Allure.Attributes.AllureSubSuite(“NoAssert”)]
[NUnit.Allure.Attributes.AllureSubSuite(“Simple”)]
[TestMethod]
[TestCategory(“Integration Test”)]


(Alexandr D.) #20

Если вы запускаете тесты через VS, то нигде)