Run behave tests in parallel
Project description
A Python CLI tool for running Gherkin/Behave BDD tests in parallel with comprehensive in-memory result aggregation and reporting.
Anubis orchestrates parallel execution of Behave test suites, distributing scenarios across multiple worker processes for faster feedback. It handles test parsing, distribution, aggregation, and generates console output (with Behave formatter pass-through available for additional formats).
Features
Parallel Test Execution: Distribute tests across N worker processes for faster execution
Flexible Granularity: Run tests at feature, scenario, or example (scenario outline rows) level
Smart Tag Filtering: Leverage Behave’s full tag expression syntax for test selection
Result Aggregation: Automatically merge results from all workers into unified reports
Formatted Console Summary: Aggregated pass/fail summary and per-feature scenario details
Dry-run Mode: Parse and validate tests without execution
Configurable Pass Thresholds: Set minimum pass rates for CI/CD integration
Full Behave Compatibility: Pass any Behave argument through to the runner
Installation
From PyPI:
pip install bpp-anubis
From source:
git clone <repository>
cd anubis
pip install -e .
For development (includes build and documentation tools):
pip install -r requirements-dev.txt
Quick Start
Run all tests in the features directory (default):
anubis
Run tests from a specific path with 4 parallel workers:
anubis --features tests/features --processes 4
Run only tests tagged with @automated, excluding @flaky:
anubis --features tests/features --tags @automated --tags ~@flaky
Dry-run to validate feature files:
anubis --features tests/features --dry-run
Run scenarios with custom Behave definitions:
anubis --features tests/features -D env=staging -D browser=chrome
For detailed usage and all available options, see README.md.
Requirements
Runtime:
Python 3.10+
behave >= 1.2.6 (dynamically supports all compatible versions)
Development:
See requirements-dev.txt for build, packaging, and documentation tools.
Usage
Anubis is designed to be intuitive for users familiar with Behave. Core concepts:
- Granularity (--unit):
feature: Each feature file is one test unit
scenario: Each scenario (including outlines) is one test unit
example: Each row in a scenario outline is a separate test (default, most parallelizable)
- Tags (--tags):
Standard Behave tag filtering with support for complex expressions: --tags @automated --tags ~@flaky runs automated tests excluding flaky ones
- Processes (--processes):
Number of parallel workers. Default is 1 (sequential). Increase for faster execution on multi-core systems.
- User Definitions (-D):
Pass variables to Behave step implementations. Format: -D key=value
Exit Codes
0: Tests passed (pass rate >= threshold) or no tests found with --pass-with-no-tests
1: Tests failed or pass rate below threshold
Output
By default, worker result files are written to the .output directory:
json_results/ - Individual worker results (temporary)
CLI notes:
--junit is deprecated and explicitly rejected by the parser
--delete-output has been removed
--log-file, --log-std-out, and --log-level have been removed
For JUnit/other result files, use Behave pass-through formatter flags
Migration note:
Heavy post-run worker log synthesis was removed to reduce post-run lag. Console output and Behave formatter pass-through remain available.
Configuration
All behavior is controlled via command-line arguments. See README.md for comprehensive documentation of all options.
Examples
Run tests with custom output directory:
anubis --features tests/features --output ./results
Run tests at scenario level with 80% pass threshold:
anubis --features tests/features --unit scenario --pass-threshold 0.8 --processes 8
Run regression tests, excluding known flaky and slow tests:
anubis --features tests/features --tags @regression --tags ~@flaky --tags ~@slow
Contributing
Contributions are welcome. Please ensure code follows project conventions and includes appropriate documentation.
Architecture
See agents.md for detailed architecture documentation, including: - Component descriptions and relationships - Execution flow and data pipelines - Design patterns and extension points - Known limitations
License
MIT
Support
For issues, questions, or suggestions, please contact the development team or file an issue in the repository.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bpp_anubis-2026.4.28.1.tar.gz.
File metadata
- Download URL: bpp_anubis-2026.4.28.1.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33d325466dc9ad2aea75b15888debd4fb3b23fabef8b34ec0180aba1cfa64348
|
|
| MD5 |
d2b20b95935ce1fdb387835ea26d26b2
|
|
| BLAKE2b-256 |
6267a70f1a2724dd183d8d0c5a05eb3cda7be1bab1d8301cd071215a4288ff6a
|
File details
Details for the file bpp_anubis-2026.4.28.1-py3-none-any.whl.
File metadata
- Download URL: bpp_anubis-2026.4.28.1-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aefde8c0a8bc1fdcdf474a255e1ef97f4225a04bcc96bbe04ddd8c7e197057c5
|
|
| MD5 |
cc5bf4e87664e06168395d4f8215d303
|
|
| BLAKE2b-256 |
17e27f6f457e80a75740aee77fd9b66eb4af9126ad46da1c2b430e4d9d0afb55
|