Plugin for py.test to generate allure xml reports
Project description
Allure Pytest Adaptor
This repository contains a plugin for py.test which automatically prepares input data used to generate Allure Report. Note: this plugin currently supports only Allure 1.4.x series.
Installation and Usage
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:
pytest_plugins = 'allure.pytest_plugin',\
Allure Features
Attachments
To attach some content to test report:
import allure
def test_foo():
allure.attach('my attach', 'Hello, World')
Steps
To divide a test into steps:
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:
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:
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:
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:
py.test my_tests/ --allure_severities=critical,blocker
Issues
Issues can be set for test.
import pytest
@pytest.allure.issue('http://jira.lan/browse/ISSUE-1')
def test_foo():
assert False
import allure
@allure.issue('http://jira.lan/browse/ISSUE-2')
class TestBar:
# test will have ISSUE-2 and ISSUE-3 label
@allure.issue('http://jira.lan/browse/ISSUE-3')
def test_bar1(self):
pass
# test will have only ISSUE-2 label
def test_bar2(self):
pass
Features & Stories
Feature and Story can be set for test.
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:
py.test my_tests/ --allure_features=feature1,feature2
py.test my_tests/ --allure_features=feature1,feature2 --allure_stories=story1,story2
Environment Parameters
You can provide test environment parameters such as report name, browser or test server address to allure test report.
import allure
import pytest
def pytest_configure(config):
allure.environment(report='Allure report', browser=u'Я.Браузер')
@pytest.fixture(scope="session")
def app_host_name():
host_name = "my.host.local"
allure.environment(hostname=host_name)
return host_name
@pytest.mark.parametrize('country', ('USA', 'Germany', u'Россия', u'Япония'))
def test_minor(country):
allure.environment(country=country)
assert country
More details about allure environment you can know from documentation.
Development
Use allure.common.AllureImpl class to bind your logic to this adapter.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for pytest-allure-adaptor-1.5.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3d6ce8c1859270677945a71157909dad6b6027a05b808bd265457a5fb07fce6 |
|
MD5 | 271505cf5198e80dd20c5aaa4f6ae65e |
|
BLAKE2b-256 | a9ced4e515ff6a57cd4ac7ac1ce25516295b7b840e2fb889a97d71969e0c1ac9 |