Как добавить вложения в отчет Allure в C #? - PullRequest
0 голосов
/ 18 октября 2018

Фреймворк Allure - это действительно красивая фреймворк для отчетов о тестировании.Тем не менее, он содержит довольно плохую документацию для C #.

Я хочу добавить кое-что в свой отчет об очаровании:

  • Журнал отладки (как и все, что я пишу вотладка)
  • Скриншот
  • Файл

Как это сделать?Я понятия не имею, пожалуйста, помогите мне, если вы знаете, как это сделать.Кажется, класс AllureLifecycle может помочь мне, но я не уверен, как его использовать.

В случае, если это имеет значение, я использую Allure вместе с SpecFlow и MS test .

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Я искал больше и, кажется, я нашел Истину.

И Истина в том, что можно добавить все нужные мне вложения, но их можно добавить только в виде файла:

byte[] log = Encoding.ASCII.GetBytes(Log.GetAllLog());
AllureLifecycle.Instance.AddAttachment("DebugLog", "application/json", log, "json");

Если вы хотите добавить файл фактически из пути (местоположения), вы можете сделать это тем же методом, но с другой перегрузкой.

Так что просто поместите этот код в метод teardown \ afterscenario или в любое другое место (например, метод afterstep), где вы хотите сделать это вложение.Я использую SpecFlow, поэтому, если я добавлю это в хук «AfterStep», Allure отобразит эти файлы, прикрепленные к определенному шагу!Это потрясающе!)

0 голосов
/ 23 октября 2018

Использование кода такого типа в методе AfterScenario:

if (_scenarioContext.TestError != null)
            {
                var path = WebElementsUtils.MakeScreenshot(_driver);
                _allureLifecycle.AddAttachment(path);
            }

Сначала проверяется, прошел ли сценарий, если нет, то

WebElementsUtils.MakeScreenshot (_driver)

метод делает скриншот и возвращает его путь.Тогда этот путь я дал Аллуру.В качестве второго параметра в том же методе я могу дать название скриншота.В результате я получаю скриншот в блоке AfterScenario в отчете Allure.PS Это только для скриншотов, про логи ничего сказать не могу.

0 голосов
/ 18 октября 2018

кажется, что у allure есть некоторые события, которые можно использовать.См. https://github.com/allure-framework/allure-csharp-commons/blob/master/AllureCSharpCommons.Tests/IntegrationTests.cs для получения дополнительной информации.

сам не пробовал, но что-то подобное должно работать в соответствии с документацией.

  _lifecycle = Allure.DefaultLifecycle;  
  _lifecycle.Fire(new
 MakeAttachmentEvent(AllureResultsUtils.TakeScreenShot(),
                 "Screenshot",
                 "image/png"));
 _lifecycle.Fire(new MakeAttachmentEvent(File.ReadAllBytes("TestData/attachment.json"),
            "JsonAttachment",
            "application/json"));

Надеюсь, это поможет.

...