Behave
Behave is an open-source behavior-driven development tool for Python projects.
What Behave is
Behave is an open-source behavior-driven development tool for Python projects. Teams write feature descriptions and expected results in plain-text UTF-8 files, then link those scenarios to Python step implementations. Given, When, Then, and Step decorators connect written steps to code. Scenario outlines can repeat tests for each row in an examples table, and steps can receive tables or text through a context object. Hooks allow code to run around steps, scenarios, features, tags, or a complete test run; fixtures handle setup and cleanup. Tags select which scenarios to include, and a work-in-progress option runs tagged scenarios, turns off output capture, and stops at the first error. Behave can be paired with Selenium WebDriver for browser interaction. Its documentation covers Django integration options and points to Flask guidance. Installation instructions include pip, a source distribution, and the GitHub repository, while optional formatter packages are available through behave-contrib. Behave runs locally on Linux, macOS, and Windows. The project directs bug reports and feature discussions to GitHub issues.
Good
- Open-source and free to use.
- Feature files use plain-text UTF-8.
- Tags can select scenarios for a test run.
- Hooks and fixtures support setup and cleanup.
- Documentation covers Django, Flask, and Selenium guidance.
Watch out
- Requires Python step implementations for scenarios.
- It is one of several Gherkin-based Python options.
- The project warns its comparison page may be out of date.
Who it suits
Behave suits Python teams that want to express tests as readable feature scenarios and connect them to code. Its collaboration model is aimed at developers, QA staff, and business participants.
Verdict
Behave offers a local, Python-centered way to connect readable scenarios with executable tests. Teams should account for the need to maintain Python step implementations and review the project’s stated comparison-page caveat.
The facts
Each one read from Behave's own pages, with the date it was checked.
What it does
- BDD collaboration
- Its documentation describes BDD as encouraging collaboration among developers, QA, and non-technical or business participants.checked 9 Oct 2026
- Collaboration
- Its documentation describes BDD as a way to encourage collaboration among developers, QA, and non-technical or business participants.checked 4 Oct 2026
- Editor support
- The ecosystem page lists IDE and editor plugins with Behave or Gherkin support, including entries for PyCharm and VS Code.checked 9 Oct 2026
- Extensibility
- Optional formatter dependencies can add formatters from behave-contrib to those provided by default.checked 9 Oct 2026
- Feature files
- Behave uses Gherkin feature files as both human-readable documentation and automated tests.checked 9 Oct 2026
- Fixtures
- Behave fixtures support setup and cleanup tasks during test execution.checked 4 Oct 2026
- Hooks
- Optional environment controls can run code before and after steps, scenarios, features, or the whole test run.checked 9 Oct 2026
- Install
- The installation guide provides pip, source-distribution, and GitHub repository installation methods.checked 9 Oct 2026
- Installation
- The documentation gives pip and source-distribution installation instructions and also describes installing from the GitHub repository.checked 4 Oct 2026
- Integrations
- The documentation includes integration guidance for Django and Flask and examples using Selenium for browser interaction.checked 9 Oct 2026
- Limits
- The documentation says Behave is one of several options for Gherkin-based BDD in Python and warns that its comparison page may be out of date.checked 9 Oct 2026
- Optional packages
- Optional installation extras include documentation and development dependencies, plus additional formatters from behave-contrib.checked 4 Oct 2026
- Purpose
- Behave is a Python-style behavior-driven development tool that runs tests written in a natural-language style backed by Python code.checked 9 Oct 2026
- Python steps
- Scenarios are backed by Python step implementations stored in a steps directory.checked 9 Oct 2026
- Scenario data
- Scenario outlines run once for each example row, and steps can receive associated text blocks or tables through the context object.checked 4 Oct 2026
- Scenario outlines
- Scenario outlines use example tables to run a scenario repeatedly with substituted values.checked 9 Oct 2026
- Security
- The Behave GitHub repository has a Security tab, but the opened page did not state specific security or compliance claims.checked 4 Oct 2026
- Selection and debugging
- Tags can selectively run scenarios, and a work-in-progress option runs tagged scenarios, disables output capture, and stops at the first error.checked 4 Oct 2026
- Step implementations
- Behave maps Given, When, Then, and Step decorators in Python files to steps written in feature scenarios.checked 4 Oct 2026
- Support and community
- The project documentation directs users to GitHub issues to discuss bugs and features.checked 4 Oct 2026
- Support and contribution
- The project invites bug reports and enhancement contributions through GitHub issues and pull requests.checked 9 Oct 2026
- Tags
- Tags can select which features or scenarios to include in a test run, and tag information is accessible to the backing Python code.checked 9 Oct 2026
- Test controls
- Environment hooks can run before and after steps, scenarios, feature files, tags, or the whole test run.checked 4 Oct 2026
Where it runs
- Browser tooling
- The documentation lists Selenium WebDriver as software that can be combined with Behave to drive a browser.checked 4 Oct 2026
Alternatives to Behave
- 1

Karate
Free planOpen sourceAPIExtensionLinuxmacOS8.2From $100 a year - 2
FitNesse
Free planWebAPILinuxmacOS6.7Free plan - 3

Reqnroll
Free planWindowsmacOSLinux6.7From €400 a year - 4
BddDotNet
Free planLinuxmacOSWindows6.6Free plan - 5
BDDX
Free planWeb6.6From $9.99 a month - 6

Cucumber Open
Free planAndroidAPILinuxmacOS6.6Free plan
