Allure-Python: Generating Rich Test Reports for Python Testing Frameworks
Allure-Python is a reporting tool for Python test frameworks such as unittest, pytest, and nose, providing customizable, interactive HTML reports with support for decorators, steps, attachments, environment data, and advanced features to enhance test visibility and analysis.
Allure-Python is a reporting utility designed for Python testing frameworks (e.g., unittest, pytest, nose) that builds beautiful, interactive, and highly customizable HTML test reports, displaying summaries, detailed steps, attachments, environment information, and tag classifications.
Installation : Ensure a Java Runtime Environment is present, then install the appropriate Allure-Python packages:
pip install allure-pytest # if using pytest pip install allure-unittest # if using unittest pip install allure-nose # if using noseConfiguration :
For pytest , add the --alluredir option when running tests:
pytest --alluredir=allure_resultsFor unittest or nose , import the Allure plugin and register it in your test code:
import allure from allure_commons.lifecycle import ALLURE_LIFECYCLE ALLURE_LIFECYCLE.plugin_manager.register(allure_unittest.AllureUnittest) # or for nose from allure_nose import AllureNose ALLURE_LIFECYCLE.plugin_manager.register(AllureNose())Usage – Decorators and Annotations
Allure provides several decorators to enrich test metadata, such as:
@allure.title("Test Title") – sets a descriptive title for the test case.
@allure.description("Detailed description") – adds a multi‑line description.
@allure.severity("critical") – marks the test’s importance level (e.g., blocker, critical, normal, minor, trivial).
@allure.feature("Feature Name") – groups tests by product feature.
@allure.story("User Story") – links a test to a specific user story.
@allure.label("Label Name", "Label Value") – adds custom tags for filtering.
Example of a titled test with description and severity:
@allure.title("Verify user login") @allure.description("""
This test verifies that a user can log in with valid credentials.
Expected results: no error message, redirection to the user dashboard, and welcome message displayed.
""") @allure.severity("critical") def test_user_login():
...Steps and Attachments
Define test steps with allure.step and attach files or screenshots with allure.attach :
def test_example():
allure.step("Login operation", body=lambda: do_login(username, password))
allure.step("Search operation", body=lambda: perform_search(query)) def test_screenshot():
screenshot = take_screenshot()
allure.attach(screenshot, name="Failure screenshot", attachment_type=allure.attachment_type.PNG)Generating the Report
After test execution, generate the HTML report using the Allure CLI:
allure serve allure_resultsTo produce static files:
allure generate allure_results -o allure_reportThe generated report includes charts for execution time distribution, failure trends, and other statistics, aiding analysis and decision‑making.
Advanced Features
Set global environment variables with allure.environment , add Epic or Owner annotations, link tests to external resources (e.g., JIRA) via allure.link , and leverage built‑in charts for deeper insight.
In summary, Allure-Python offers a comprehensive and flexible reporting solution for Python testing, enhancing visibility, traceability, and management of test activities.
Test Development Learning Exchange
Test Development Learning Exchange
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.