Вложения(attach)

Отчеты могут отображать множество различных типов предоставленных вложений, которые могут дополнять результаты теста, шага или прибора. Вложения могут быть созданы либо с помощью allure.attach(body, name, attachment_type, extension):

  1. body- необработанный контент для записи в файл.

  2. name- строка с именем файла

  3. attachment_type- одно из allure.attachment_typeзначений

  4. extension- будет использоваться в качестве расширения для созданного файла.

Или allure.attach.file(source, name, attachment_type, extension):

  1. source- строка, содержащая путь к файлу.

(остальные аргументы те же)

import allure
import pytest


@pytest.fixture
def attach_file_in_module_scope_fixture_with_finalizer(request):
    allure.attach('A text attacment in module scope fixture', 'blah blah blah', allure.attachment_type.TEXT)
    def finalizer_module_scope_fixture():
        allure.attach('A text attacment in module scope finalizer', 'blah blah blah blah',
                      allure.attachment_type.TEXT)
    request.addfinalizer(finalizer_module_scope_fixture)


def test_with_attacments_in_fixture_and_finalizer(attach_file_in_module_scope_finalizer):
    pass


def test_multiple_attachments():
    allure.attach.file('./data/totally_open_source_kitten.png', attachment_type=allure.attachment_type.PNG)
    allure.attach('<head></head><body> a page </body>', 'Attach with HTML type', allure.attachment_type.HTML)

Вложения отображаются в контексте тестового объекта, которому они принадлежат. Вложения типа HTML рендерятся и отображаются на странице отчета. Это удобный способ настроить собственное представление результатов теста.

Несколько способов загрузить скриншот:

  1. Отправка скриншота по пути:

allure.attach(
    "screenshot.png", 
    name = 'screenshot', 
    attachment_type = allure.attachment_type.PNG
)

2. Отправка скрина напрямую из драйвера:

from allure_commons.types import AttachmentType

allure.attach(
    self.driver.get_screenshot_as_png(), 
    name="Screenshot", 
    attachment_type=AttachmentType.PNG
)

Добавление скриншота удобно применять для сохранения скриншота в отчёт при поломке теста

def tearDown(self):    
    if self.has_exception():        
        allure.attach(
            self.driver.get_screenshot_as_png(), 
            attachment_type = AttachmentType.PNG
        )    
        
    self.driver.quit()

Last updated