allure

Introduction

Installation

Windows

On Windows Allure can be installed via scoop

scoop install allure

Installing 'allure' (2.35.1) [64bit] from 'main' bucket allure-2.35.1.zip (23.8 MB) [==============================] 100% Checking hash of allure-2.35.1.zip ... ok. Extracting allure-2.35.1.zip ... done. Linking ~\scoop\apps\allure\current => ~\scoop\apps\allure\2.35.1 Creating shim for 'allure'. 'allure' (2.35.1) was installed successfully!

Allure requires Java. You can read about installing Java here .

Add Java to PATH with the help of PowerShell

$Env:Path += ';C:\Program Files\jdk-25.0.1\bin'

jdk-25.0.1 must be replaced with the JDK version you downloaded.

Version check

allure --version

2.35.1

Start the web server

To view the reports you need to start the web server. This is done with the serve command, specifying the directory that contains the reports of interest.

allure serve allure-results

allure serve S:\allure-results

Generating report to temp directory... Report successfully generated to C:\Users\A\AppData\Local\Temp\2968957035864493555\allure-report Starting web server... Server started at <http://127.0.0.1:50188>. Press <Ctrl+C> to exit

Report example

Once the web server is started, you can study the reports by opening them in the browser

http://127.0.0.1:50188

if it did not open automatically

History

Let us talk about what happens when allure is launched in various ways.

We will pay special attention to preserving the history of test runs.

Let us start with the fact that we have already written a test and specified the directory in which the results should be saved

In PyTest this can be done with pytest.ini

[pytest] addopts = --alluredir=S:\allure-results

Let us make sure that there is nothing on the disk yet.

ls S:\

Now let us run the demo_test.py file, which contains three tests: test_a, test_b and test_c

python -m pytest -vv .\tests\demo_test.py

ls S:\

allure-results

The allure-results directory has appeared

ls S:\allure-results\

Directory: S:\allure-results Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 4/14/2026 7:37 PM 759 3a9a67f8-27b5-4830-a830-0724c1ce2fb0-result.json -a--- 4/14/2026 7:37 PM 582 75dd9c66-94c7-4850-9b8e-e944b1c8edf8-result.json -a--- 4/14/2026 7:37 PM 582 e25b2c13-901b-41de-bbdf-5b9a2d822560-result.json

There are now three files in the directory. Each corresponds to one test. Since the names are generated, the order may not match.

Let us open the first file, 3a9…

notepad S:\allure-results\3a9a67f8-27b5-4830-a830-0724c1ce2fb0-result.json

{"name": "test_b", "status": "failed", "statusDetails": {"message": "AssertionError: assert 1 == 2", "trace": "def test_b():\n> assert 1 == 2\nE assert 1 == 2\n\ntests\demo_test.py:14: AssertionError"}, "start": 1776184411795, "stop": 1776184411811, "uuid": "c166a217-75cf-4cbc-b72f-aeaf48168360", "historyId": "ade4eb11ee464ffee49775014f5f7d46", "testCaseId": "ade4eb11ee464ffee49775014f5f7d46", "fullName": "tests.demo_test#test_b", "labels": [{"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "demo_test"}, {"name": "host", "value": "ANDREI_HOST"}, {"name": "thread", "value": "5240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.demo_test"}]}

You can immediately see that this file contains data about the test test_b

Article author: Arthur Isaev