Skip to main content

CLI toolkit for scaffolding and evolving Behave BDD projects.

Project description

behave-gen

A CLI toolkit for scaffolding and evolving Behave BDD projects.

CI Docs PyPI Python License Code style: ruff Types: mypy

behave-gen helps you create, extend, and maintain Behave (Python BDD) projects. It scaffolds new projects, generates .feature files and concrete step definitions, integrates ecosystem tools (behave-doctor, behave-lint, behave-format), and migrates Cucumber projects to Behave.

Features

Command Description
init Scaffold a new Behave project with sensible defaults.
add feature Generate .feature files from templates (default, CRUD).
add steps Add real, runnable step libraries (HTTP, auth). No empty skeletons.
add environment Rewrite environment.py with behave-kit/behave-data wiring.
add config Add ecosystem packages to pyproject.toml idempotently.
check Run behave-doctor diagnostics with actionable suggestions.
doctor Alias for check.
lint Lint .feature files via behave-lint.
format Format .feature files via behave-format.
from-openapi Generate features and HTTP steps from an OpenAPI 3.x spec.
from-postman Generate features from a Postman Collection v2.1.
from-swagger Convert Swagger 2.0 to OpenAPI 3.x and generate features.
migrate Migrate a Cucumber (Java) project to Behave.
preview Pretty-print a .feature file.
stats Report project statistics (features, scenarios, steps, tags).
update Re-apply generated environment and step libraries.

Installation

pip install behave-gen

Requirements

  • Python 3.11 or newer.
  • A working pip / venv environment.

Optional extras extend functionality as shown below.

With optional extras:

pip install behave-gen[doctor,lint,format,openapi]
pip install behave-gen[all]
Extra Provides
doctor behave-doctor — static analysis for check/doctor.
lint behave-lint — Gherkin linting for lint.
format behave-format — Gherkin formatting for format.
openapi pyyaml — YAML parsing for from-openapi/from-swagger.
jinja2 jinja2 — alternative template engine.
kit behave-kit — environment hooks.
data behave-data — test data fixtures.
all All of the above.

Quick start

# Create a new Behave project
behave-gen init my-project
cd my-project

# Add a feature file
behave-gen add feature login

# Add HTTP step definitions
behave-gen add steps --lib http

# Check project health
behave-gen check

# Run tests
behave

Generating from an OpenAPI spec

behave-gen from-openapi spec.yaml --out-dir gen --step-lib http --tag api

This produces .feature files grouped by path, each with scenarios that use the HTTP step library syntax. The --step-lib http flag also generates a concrete, runnable http_steps.py module.

Migrating from Cucumber

behave-gen migrate path/to/cucumber-project --out-dir migrated

Feature files are copied into a Behave features/ layout. Java step definitions are not auto-translated; use behave-gen add steps to generate Python equivalents.

Examples

The examples/ directory contains ready-to-run projects that demonstrate each workflow:

  • basic-projectinit + add feature + add steps with HTTP and auth step libraries.
  • openapi-projectfrom-openapi generating features and HTTP steps from a Petstore OpenAPI 3.0 spec.
  • migrated-projectmigrate converting a Cucumber (Java) project to Behave feature files.

See examples/README.md for details.

Architecture

behave_gen/
  cli/            Typer CLI application
  commands/       One module per CLI command
  generators/     Pluggable code generators (OpenAPI, Postman)
  plugins/        Source-specific parsers and builders
  step_libraries/ Built-in step library templates (HTTP, auth)
  templates/      Project and feature templates
  diagnostics.py  Optional-dependency handling

Supply chain & trust

  • Trusted Publishing (OIDC) — releases to PyPI use Trusted Publishing via GitHub Actions OIDC. No long-lived API tokens are stored in secrets.
  • Pinned actions — all GitHub Actions are pinned to specific versions (e.g. @v4, @v1.12.4).
  • Minimal dependencies — only behave, behave-model, and typer at runtime. All other dependencies are optional extras.
  • py.typed marker — the package ships with inline type hints.
  • Reproducible buildshatchling build backend with no dynamic metadata.

Development

git clone https://github.com/MathiasPaulenko/behave-gen.git
cd behave-gen
pip install -e ".[dev]"
pre-commit install
Command Description
make help Show all available targets.
make dev Install with dev extras.
make lint Run ruff check + mypy --strict.
make lint-fix Auto-fix lint issues.
make format Format the code with ruff format.
make format-check Verify formatting without changes.
make test Run the test suite.
make test-cov Run tests with coverage.
make build Build sdist + wheel into ref/output/dist/.
make clean Remove build artifacts and caches.

See CONTRIBUTING.md for full guidelines.

Documentation

Full documentation, including the CLI reference, configuration guide, and Python API docs, is published at mathiaspaulenko.github.io/behave-gen.

Acknowledgements

  • Built on top of Behave and the Python packaging ecosystem.
  • Template and scaffolding patterns inspired by the Python open source community's emphasis on minimal, composable tools.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

behave_gen-1.1.2.tar.gz (96.6 kB view details)

Uploaded Source

Built Distribution

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

behave_gen-1.1.2-py3-none-any.whl (75.9 kB view details)

Uploaded Python 3

File details

Details for the file behave_gen-1.1.2.tar.gz.

File metadata

  • Download URL: behave_gen-1.1.2.tar.gz
  • Upload date:
  • Size: 96.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for behave_gen-1.1.2.tar.gz
Algorithm Hash digest
SHA256 cf9d41435855fb876079895395c2141ad39d3e0db33abd3899d0614d2d58d0ae
MD5 2eb21f1c4b576b6bf5f5aca991343911
BLAKE2b-256 038b44214833dd72795453c074c6fe2d9a0cb6a1d778b26d40b622eaee2db39a

See more details on using hashes here.

Provenance

The following attestation bundles were made for behave_gen-1.1.2.tar.gz:

Publisher: release.yml on MathiasPaulenko/behave-gen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file behave_gen-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: behave_gen-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 75.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for behave_gen-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cd47c1788150545336b9ae204ae6daac3763e514e9249ee4d4a4e21b5edb86fd
MD5 842382412389e50341646917597949ae
BLAKE2b-256 75779560e3ba0ecd31ff3daf4e48fc7d148fd201f06c047357e09ebfc82c00c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for behave_gen-1.1.2-py3-none-any.whl:

Publisher: release.yml on MathiasPaulenko/behave-gen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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