How to add a screenshot to allure report with python?

12,274

Solution 1

For allure 2

from allure_commons.types import AttachmentType

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

Solution 2

Instead of setting the type as a string png, you need to use allure module attachment type constant, which is an Enum with extension attribute defined:

from allure.constants import AttachmentType

allure.attach('screenshot', driver.get_screenshot_as_png(), type=AttachmentType.PNG)
Share:
12,274
Aliaksandr Klimovich
Author by

Aliaksandr Klimovich

Updated on June 14, 2022

Comments

  • Aliaksandr Klimovich
    Aliaksandr Klimovich almost 2 years

    I have this code:

    # coding: utf-8
    from selenium import webdriver
    import pytest
    import allure
    
    
    @pytest.yield_fixture(scope='session')
    def driver():
        _driver = webdriver.PhantomJS()
        yield _driver
        _driver.quit()
    
    
    def test_ya(driver):
        with allure.step('open ya.ru and take screenshot'):
            driver.get('http://ya.ru/')            
            allure.attach('screenshot', driver.get_screenshot_as_png(), type='png')
    

    and I try to take a screenshot and save it to allure report, after execution I have:

    >       with self._attachfile("%s-attachment.%s" % (uuid.uuid4(), attach_type.extension)) as f:
                if isinstance(body, text_type):
    E           AttributeError: 'str' object has no attribute 'extension'
    

    How can I fix this?