Skip to main content

Run behave tests in parallel

Project description

Latest PyPI version

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

Authors

anubis was written by matthew bahloul.

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

bpp_anubis-2026.4.20.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bpp_anubis-2026.4.20-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file bpp_anubis-2026.4.20.tar.gz.

File metadata

  • Download URL: bpp_anubis-2026.4.20.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bpp_anubis-2026.4.20.tar.gz
Algorithm Hash digest
SHA256 7fe22f0e9f943879d0d82e8646e085ec36af118ef3cc9cabb77e0862308e0b4e
MD5 d23eb752935a440c65faf5afc807be2a
BLAKE2b-256 fecf6a3546f4e26096e30be9cb0c5c837382c3d7659bc7de9e8148694c0b4285

See more details on using hashes here.

File details

Details for the file bpp_anubis-2026.4.20-py3-none-any.whl.

File metadata

  • Download URL: bpp_anubis-2026.4.20-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bpp_anubis-2026.4.20-py3-none-any.whl
Algorithm Hash digest
SHA256 157c5034d449eae5cff2e7b0564545245c0e1dbf3796862d4200ce8de81e0766
MD5 b4d0b5aaeb64169b9ff8462073938c7e
BLAKE2b-256 8e59b6b665a9cb88e7bed3e8d35dcacd5c679225c4c7b566543d21384d05b6c4

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