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

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

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

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

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

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

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

2 лайка

Я все таки решила еще раз попробовать прикрутить Allur reports к проекту.
Подскажите кто сталкивался с таким 2018-08-12_1958

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

Я тоже об этом думала, но 3.9.0 удалился, когда распаковывался пакет, а 3.10.1 добавился 2018-08-13_1030
Подозреваю проблема в другом и что с этим делать?
c# - The type is defined in an assembly that is not referenced, how to find the cause? - Stack Overflow
Misleading error for mismatched target versions · Issue #14756 · dotnet/roslyn · GitHub

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

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

Нету. А что нужно добавить, я думала он автоматичсеки добавится. 2018-08-13_1557

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

<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>

Выяснилось что не смотря на распаковку из нугетпакета, версия все равно была 2.6. Пришлось удалить все что связано с nunit и установить заново. Теперь все ок 2018-08-13_1750

А где найти 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”)]

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

1 лайк

Жаль, что не сразу результат.
У меня еще вопрос по поводу степов внутри теста. Есть ли такой атрибут и чем его можно заменить если нет. Мне нужны детали в репорте, которые помогут мануал тестеру понять в каком месте проблема.

Запускаю через NUnit Console Runner все равно allure-results не появляется.

Как запускаете?
nunit3-console *.dll?

Смотря какие детали.
Из того что вы написали вообще непонятно что вы хотите.

Опять же, не реклама конечно же :smiley:, но я в своей версии аллюра добавил метод, который загружает отформатированные xml/json.
А так - вы можете загрузить любое вложение туда, хоть видео.
В классическом аллюре метод есть соответствующий - AddAttachment()
Выглядит это всё как-то так:

Скрин

–where=“class = Automation.Tests.AcceptanceTestSuite”
–where=“test =~ /RoleDeletionTest/”
Эти 2 варианта работают, а вот
– where= “cat = Acceptance” падает с ошибкой
Error : Automation.Tests.AcceptanceTestSuite.RoleDeletionTest
System.ArgumentOutOfRangeException : Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Потому что у вас пробел перед where.

Мне нужны шаги внутри тестов, потому что в случае длинных функциональных тестов в отчете хочется видеть что были такие шаги и тест упал на определенном шаге.

Ну так вызывайте методы там, где это надо.
AllureLifeCycle.Instance.StartStep(...)
AllureLifeCycle.Instance.UpdateStep(...)
AllureLifeCycle.Instance.StopStep(...)

1 лайк

В смысле нигде?
VS благополучно все складывает в TEMP.

На всякий - есть такая штука как AllureLifecycle.Instance.ResultsDirectory :wink:

2 лайка