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

Первый Онлайн ИНститут Тестировщиков
онлайн, начало 25 февраля
Тестирование REST API
онлайн, начало 25 февраля
Логи как инструмент тестировщика
онлайн, начало 25 февраля
Автоматизация функционального тестирования
онлайн, начало 22 февраля
Фотография

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К   0 Количество загрузок:

  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К   0 Количество загрузок:

 

  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К   0 Количество загрузок:

  • 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


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




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

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

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

Яндекс.Метрика
Реклама на портале