/pytest-html

Plugin for generating HTML reports for py.test results

Primary LanguagePythonOtherNOASSERTION

pytest-html

pytest-html is a plugin for py.test that generates a HTML report for the test results.

License PyPI Travis Issues Requirements

Requirements

You will need the following prerequisites in order to use pytest-html:

  • Python 2.6, 2.7, 3.2, 3.3, 3.4, PyPy, or PyPy3
  • py.test 2.7 or newer

Installation

To install pytest-html:

$ pip install pytest-html

Then run your tests with:

$ py.test --html=report.html

Enhancing reports

You can add change the Environment section of the report by modifying request.config._html.environment from a fixture:

@pytest.fixture(autouse=True)
def _environment(request):
    request.config._environment.append(('foo', 'bar'))

You can add details to the HTML reports by creating an 'extra' list on the report object. The following example adds the various types of extras using a pytest_runtest_makereport hook, which can be implemented in a plugin or conftest.py file:

def pytest_runtest_makereport(__multicall__, item):
    pytest_html = item.config.pluginmanager.getplugin('html')
    report = __multicall__.execute()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':
        # always add url to report
        extra.append(pytest_html.extras.url('http://www.example.com/'))
        xfail = hasattr(report, 'wasxfail')
        if (report.skipped and xfail) or (report.failed and not xfail):
            # only add additional html on failure
            extra.append(pytest_html.extras.html('<div>Additional HTML</div>'))
        report.extra = extra
    return report

Resources