How to add a screenshot to allure report with python?

烂漫一生 提交于 2019-11-27 18:25:44

问题


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?


回答1:


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)



回答2:


For allure 2

from allure_commons.types import AttachmentType

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


来源:https://stackoverflow.com/questions/29929244/how-to-add-a-screenshot-to-allure-report-with-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!