Skip to main content

Plugin for py.test to generate allure xml reports

Project description

Allure Pytest Adaptor
=====================

.. image:: https://pypip.in/v/pytest-allure-adaptor/badge.png
:alt: Release Status
:target: https://pypi.python.org/pypi/pytest-allure-adaptor
.. image:: https://pypip.in/d/pytest-allure-adaptor/badge.png
:alt: Downloads
:target: https://pypi.python.org/pypi/pytest-allure-adaptor

This repository contains a plugin for ``py.test`` which automatically prepares input data used to generate ``Allure Report``.
**Note:** this plugin only supports Allure 1.3.x series.

Installation and Usage
======================
.. code:: python

py.test --alluredir [path_to_report_dir]
# WARNING [path_to_report_dir] will be purged at first run


This plugin gets automatically connected to ``py.test`` via ``entry point`` if installed.

Connecting to IDE:

.. code:: python

pytest_plugins = 'allure.pytest_plugin',\


Allure Features
===============

Attachments
===========

To attach some content to test report:

.. code:: python

import allure

def test_foo():
allure.attach('my attach', 'Hello, World')


Steps
=====

To divide a test into steps:

.. code:: python

import pytest

def test_foo():
with pytest.allure.step('step one'):
# do stuff

with pytest.allure.step('step two'):
# do more stuff


Can also be used as decorators. By default step name is generated from method name:

.. code:: python

import pytest

@pytest.allure.step
def make_test_data_foo():
# do stuff

def test_foo():
assert make_some_data_foo() is not None

@pytest.allure.step('make_some_data_foo')
def make_some_data_bar():
# do another stuff

def test_bar():
assert make_some_data_bar() is not None


Steps can also be used without pytest. In that case instead of ``pytest.allure.step`` simply use ``allure.step``:

.. code:: python

import allure

@allure.step('some operation')
def do_operation():
# do stuff


Steps support is limited when used with fixtures.


Severity
========

Any test, class or module can be marked with different severity:

.. code:: python

import pytest

@pytest.allure.severity(pytest.allure.severity_level.MINOR)
def test_minor():
assert False


@pytest.allure.severity(pytest.allure.severity_level.CRITICAL)
class TestBar:

# will have CRITICAL priority
def test_bar(self):
pass

# will have BLOCKER priority via a short-cut decorator
@pytest.allure.BLOCKER
def test_bar(self):
pass


To run tests with concrete priority:

.. code:: rest

py.test my_tests/ --allure_severities=critical,blocker

Features & Stories
========

Feature and Story can be set for test.

.. code:: python

import allure


@allure.feature('Feature1')
@allure.story('Story1')
def test_minor():
assert False


@allure.feature('Feature2')
@allure.story('Story2', 'Story3')
@allure.story('Story4')
class TestBar:

# will have 'Feature2 and Story2 and Story3 and Story4'
def test_bar(self):
pass


To run tests by Feature or Story:

.. code:: rest

py.test my_tests/ --allure_features=feature1,feature2
py.test my_tests/ --allure_features=feature1,feature2 --allure_stories=story1,story2

Development
===========

Use ``allure.common.AllureImpl`` class to bind your logic to this adapter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-allure-adaptor-1.3.8.tar.gz (14.5 kB view details)

Uploaded Source

File details

Details for the file pytest-allure-adaptor-1.3.8.tar.gz.

File metadata

File hashes

Hashes for pytest-allure-adaptor-1.3.8.tar.gz
Algorithm Hash digest
SHA256 51c9918db9c3e618b7b5fba88d1caf72a57cf631e1e0388543ea51e74ec1eb00
MD5 108dcd27fcd5d01f38b98c0785ed3dab
BLAKE2b-256 cb84ae281f807ba904ccafbeac36b2d6eb64303db67a1d856f8a4b18131f6d00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page