Behave vs pytest-bdd
Behave
behave.readthedocs.iopytest-bdd
pytest-bdd.readthedocs.ioSide by side
| Figure | Behave | pytest-bdd |
|---|---|---|
| Price from | — | Free |
| Free plan | — | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Plans published | 0 | 1 |
| Spec score · BDD Testing Tools | 7.8 (#9) | 7.4 (#19) |
| Installation | The documentation gives pip and source-distribution installation instructions and also describes installing from the GitHub repository. | The documentation gives `pip install pytest-bdd` as the installation command. |
| Purpose | Behave is a Python-style behavior-driven development tool that runs tests written in a natural-language style backed by Python code. | pytest-bdd implements a subset of Gherkin to automate requirements testing and support behavior-driven development. |
| Scenario outlines | Scenario outlines use example tables to run a scenario repeatedly with substituted values. | Scenario outlines support parameterized cases, and the documentation describes multiple tagged example tables. |
Plans
In their own words
Behave
Behave has no write-up on Specifiction yet; its figures are above.
pytest-bdd
pytest-bdd is a Python package for automating requirements tests with behavior-driven development. It implements a subset of Gherkin and runs scenarios as pytest tests, without a separate test runner. Feature steps can reuse pytest fixtures through dependency injection, and step definitions can accept arguments parsed as strings, with parse or cfparse formats, or by regular expression. The scenarios helper can bind scenarios from feature files and folders, including recursive folder discovery. Scenario outlines support parameterized cases and tagged example tables; step functions can also receive Gherkin data tables as row lists and docstrings as strings. For browser tests, the documented example uses pytest-splinter to provide a browser fixture. Installation is via `pip install pytest-bdd`. The package is open source under the MIT License, free at free, and requires Python 3.10 or newer. Listed platforms are Linux, macOS, and Windows.