Перейти к содержимому

Фотография

C# Allure classic NUnit with improvements

allure c# csharp reporting

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 117 сообщений
  • ФИО:Александр

Отправлено 06 июля 2018 - 04:47

Доброго времени суток, коллеги!

Я столкнулся со следующими проблемами/неудобствами в аллюре на C#:

  1. Невозможность добавления шагов/аттачей в [SetUp] и [TearDown] методах.
  2. Отсутствие нормальной возможности указания собственных:
  • Suite (самое неприятное)
  • SubSuite
  • Owner
  • Epic Suite
  • Parent Suite
  1. При выполнении действий в других потоках в рамках одного теста - allure падает с исключением.
    Т.е. если вы сделаете нечто подобное

    Task.Run( () => someMethod());

    и внутри данного метода будет вызвано логирование аллюр - выбросится исключение NullReferenceException.

  2.  

  3. Отсутствие проигнорированных тест-кейсов/тестов в отчётах. Это кейсы, у которых прописано TestCaseData.Ignore(string), а не в самом тесте Assert.Ignore (!)
    Для меня это оказалось критично, т.к. если мы не смогли найти подходящие тестовые данные из БД для кейса, он должен об этом кричать в отчете, а не отсутствовать там.

  4. Отсутствие нормального AddAttachment метода, который форматировал бы string в читабельный вид с отступами (json/xml).

Было что-то ещё, но оно не столь критичное, сейчас я уже не вспомню.

Я взял за основу проект https://github.com/u...ure-csharp-fork и добавил в него всю необходимую функциональность.

 

Переработанный мною C# allure имеет функциональность только для классического NUnit.
Если вы используете SpecFlow - не устанавливайте этот пакет, в нём нет ничего относящегося к SpecFlow, у вас всё сломается!

В будущем я добавлю нововведения для SpecFlow и сам SpecFlow, если это вообще кому-то будет нужно, кроме меня.

 

Представляю вашему вниманию nuget пакет с переработанным C# Allure под классический NUnit: https://www.nuget.or...a.NUnit.Allure/

.NET 4.5.x и .NET 4.5 на данный момент не поддерживаются.

Некоторые методы я видоизменил, поэтому возможно придётся немного изменить их старую сигнатуру переходя с классического аллюра. Но это не точно. slight_smile.png?v=5

Кратко, как использовать данный allure и его некоторые новые фишки:

  1. ГЛАВНОЕ: Для включения логирования - необходимо унаследовать класс Allure.Commons.AllureReport базовым классом ваших тестов. Не нужно у каждого класса/метода писать какие-либо allure атрибуты:
public abstract class ABaseTestConfig : AllureReport

Либо непосредственно каждый класс с тестами, если базового нет.

  1. Для использования своего названия Suite, нужно добавить атрибут [AllureSuiteAttribute] у класса:
[AllureSuite(LoginPassNotExists)]
public partial class MyTests: ABaseApiTestConfig

Пример:

 

Прикрепленный файл  suite.png   30,59К   0 Количество загрузок:

 

Внутри класса у методов можно использовать атрибут [AllureSubSuiteAttribute], для разделения на более мелкие Suite’s внутри одной большой [AllureSuiteAttribute]

subsuite.png
 
  1. Для указания Epic Story для всего класса следует использовать атрибут [AllureEpicAttribute]:
[AllureEpic("Epic story")]
public partial class MyTests: ABaseApiTestConfig

Пример:

Прикрепленный файл  epicstory.png   15,99К   1 Количество загрузок:

 

 

Соответственно, если в таком классе будут методы с атрибутами [AllureStoryAttribute], все они будут дочерними в следующем порядке:
Epic -> Feature > Story.

 

  1. Атрибут [AllureOwnerAttribute] - устанавливает Owner’a теста\тест-кейса.

  2. Если у метода указаны атрибуты [AllureIssueAttribute], то в отчете в Suite класса добавится ещё один SubSuite с названием “With Defects”, где будет список тестов/кейсов класса, в которых этот атрибут присутствует.
    Сделано для быстрого поиска тестов с дефектами в указанных классах.
    Прикрепленный файл  suitewithdefects.png   75,37К   3 Количество загрузок:

  3. Аналогично дефектам из 5 пункта, в Suite класса будут добавлены все проигнорированные тесты/кейсы этого класса (для этого ничего указывать не надо).

  4. Сам игнорированный тест имеет в отчете указанную причину, по которой это произошло.Прикрепленный файл  ignoredtest.png   27,06К   0 Количество загрузок:

  5. Добавлена перегрузка метода AddAttachment()
    Выглядит так:
public AllureLifecycle AddAttachment(string name, AttachFormat type, string content, string fileExtension = "")

Используется для добавления отформатированных аттачей (xml/json), чтобы они выглядели читабельно, а не в одну строку: 

 

Прикрепленный файл  attachs.png   83,6К   2 Количество загрузок:

 

  1. Соответственно, теперь можно использовать добавление шагов/атачей в [SetUp] и [TearDown]методах.
    Пример Setup:
[SetUp]
public virtual void Setup()
{
AllureLifecycle.Instance.AddAttachment($"Screenshot [{DateTime.Now:HH:mm:ss}]",
"image/png",
Driver.TakeScreenshot().AsByteArray);
...
}
    • Возможность использования потоков внутри одного теста для логирования в аллюр.
      Например: 
      Task.Run( () => someMethod());
      Данный метод будет иметь начальным шагом не текущий шаг главного потока, а рутовый шаг отчета.
      Если вы в этом методе будете создавать steps с substeps - они будут создаваться корректно, внутри steps своего потока.

Итд…
Если возникнут проблемы/вопросы, пишите, буду рад помочь.

 

Из известных проблем сейчас:

  1. В отчет попадают все проигнорированные тест-кейсы из тестового класса, даже если вы запускали только один тест в нём.

Прикрепленные файлы

  • Прикрепленный файл  subsuite.png   25,18К   1 Количество загрузок:

  • 0

#2 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 117 сообщений
  • ФИО:Александр

Отправлено 06 июля 2018 - 06:31

Обновил версию до 1.0.4.

Нововведения:
Добавлена поддержка net45/net451/net452 и netstandard2.0.


  • 0

#3 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 117 сообщений
  • ФИО:Александр

Отправлено 05 октября 2018 - 07:01

За прошедшее время было выпущено много новых версий.

 

Текущее положение дел можно смотреть тут:

https://github.com/Noksa/Allure.NUnit


  • 0



Темы с аналогичным тегами allure, c#, csharp, reporting

Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных