freshcrate
Home > Frameworks > behave

behave

behave is behaviour-driven development, Python style

Description

====== behave ====== .. |badge.latest_version| image:: https://img.shields.io/pypi/v/behave.svg :target: https://pypi.python.org/pypi/behave :alt: Latest Version .. |badge.license| image:: https://img.shields.io/pypi/l/behave.svg :target: https://pypi.python.org/pypi/behave/ :alt: License .. |badge.CI_status| image:: https://github.com/behave/behave/actions/workflows/test.yml/badge.svg :target: https://github.com/behave/behave/actions/workflows/test.yml :alt: CI Build Status .. |badge.docs_status| image:: https://readthedocs.org/projects/behave/badge/?version=latest :target: https://behave.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. |badge.discussions| image:: https://img.shields.io/badge/chat-github_discussions-darkgreen :target: https://github.com/behave/behave/discussions :alt: Discussions at https://github.com/behave/behave/discussions .. |badge.gitter| image:: https://badges.gitter.im/join_chat.svg :target: https://app.gitter.im/#/room/#behave_behave:gitter.im :alt: Chat at https://gitter.im/behave/behave .. |badge.gurubase| image:: https://img.shields.io/badge/Gurubase-Ask%20behave%20Guru-006BFF :target: https://gurubase.io/g/behave :alt: Ask behave Guru at https://gurubase.io/g/behave .. |logo| image:: https://raw.github.com/behave/behave/master/docs/_static/behave_logo1.png |badge.latest_version| |badge.license| |badge.CI_status| |badge.docs_status| |badge.discussions| |badge.gitter| |badge.gurubase| behave is behavior-driven development, Python style. |logo| Behavior-driven development (or BDD) is an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project. *behave* uses tests written in a natural language style, backed up by Python code. First, `install *behave*.`_ Now make a directory called "features/". In that directory create a file called "example.feature" containing: .. code-block:: gherkin # -- FILE: features/example.feature Feature: Showing off behave Scenario: Run a simple test Given we have behave installed When we implement 5 tests Then behave will test them for us! Make a new directory called "features/steps/". In that directory create a file called "example_steps.py" containing: .. code-block:: python # -- FILE: features/steps/example_steps.py from behave import given, when, then, step @given('we have behave installed') def step_impl(context): pass @when('we implement {number:d} tests') def step_impl(context, number): # -- NOTE: number is converted into integer assert number > 1 or number == 0 context.tests_count = number @then('behave will test them for us!') def step_impl(context): assert context.failed is False assert context.tests_count >= 0 Run behave: .. code-block:: console $ behave Feature: Showing off behave # features/example.feature:2 Scenario: Run a simple test # features/example.feature:4 Given we have behave installed # features/steps/example_steps.py:4 When we implement 5 tests # features/steps/example_steps.py:8 Then behave will test them for us! # features/steps/example_steps.py:13 1 feature passed, 0 failed, 0 skipped 1 scenario passed, 0 failed, 0 skipped 3 steps passed, 0 failed, 0 skipped, 0 undefined Now, continue reading to learn how to get the most out of *behave*. To get started, we recommend the `tutorial`_ and then the `feature testing language`_ and `api`_ references. .. _`Install *behave*.`: https://behave.readthedocs.io/en/stable/install/ .. _`tutorial`: https://behave.readthedocs.io/en/stable/tutorial/ .. _`feature testing language`: https://behave.readthedocs.io/en/stable/gherkin/ .. _`api`: https://behave.readthedocs.io/en/stable/api/ More Information ------------------------------------------------------------------------------- * `behave documentation`_: `latest edition`_, `stable edition`_, `PDF`_ * `behave.example`_: Behave Examples and Tutorials (docs, executable examples). * `changelog`_ (latest changes) .. _behave documentation: https://behave.readthedocs.io/ .. _changelog: https://github.com/behave/behave/blob/main/CHANGES.rst .. _behave.example: https://github.com/behave/behave.example .. _`latest edition`: https://behave.readthedocs.io/en/latest/ .. _`stable edition`: https://behave.readthedocs.io/en/stable/ .. _PDF: https://behave.readthedocs.io/_/downloads/en/latest/pdf/

Release History

VersionChangesUrgencyDate
1.3.3Imported from PyPI (1.3.3)Low4/21/2026
v1.3.3FIXED: * issue #1270: v1.3.2: Broke Python 2.7 support (submitted by: silent-observer) Low9/4/2025
v1.3.2CHANGED: * Recursive discovery and import in `steps` directory is now disabled by default. An expert user can enable this feature again (if he/she knows what he/she is doing). RELATED TO: #1210 -- Multiple, nested steps directories under steps directory. - REASON: Too many problems w/ Python packages using relative-imports in the `steps` directory. - BEST PRACTICE: Put a Python package or step-library on the Python search path, but not in the `steps` directory. DOCUMENTATION:Low8/29/2025
v1.3.1FIXED: * issue #1255: ImportError: cannot import name 'asynccontextmanager' not found in python 3.6 (submitted by: rzuckerm) * issue #1239: AmbiguousStep error on step import with "re" step-matcher (submitted by: VolodymyrDan00) DOCUMENTATION: * Appendix: Add section with description of "Runners" extension point. * Appendix: Add section with "Cucumber-Expressions". * pull #1256: docs: userdata (provided by: Therdel, fixes: #1234) * issue #1234: userdata_defines configuration file pLow8/11/2025
v1.3.0* Gherkin v6 support * Native support for `cucumber-expressions` as step matcher * Native support for `async-steps` * Support for `tag-expressions v2` * Distinguish in outcome between failures (`assert-failed`) and errors (`unexpected exceptions` at runtime) * Improved captured-output support * Improved logging support and log-to-file support * And many things more ... CHANGELOG: * [v1.3.0](https://github.com/behave/behave/blob/main/CHANGES.rst#version-130-2025-08-04) * [v1.2.7](htLow8/4/2025
v1.2.7.dev8* FIX #1251: Installation with pip does not install dependenciesLow7/16/2025
v1.2.7.dev7ENHANCEMENTS: * async-steps: Support async-step functions directly * async-steps: Add test from PR #1249 (provided by: jeteve) * ActiveTags: Add support to override an enabled active-tag * Feature: Improved capture support * issue #1246 ScenarioOutline: Placeholders in Examples.tags * Improve logging support, simplify logging to file (releated to; issue #948) * Support for Python 3.13 CHANGES: * In behave: Replace assert statements w/ require statements/calls * FIX: Spelling mistLow7/15/2025
v1.2.7.dev6* Status: Distinguish between failures and errors * Pending steps * Support for cucumber-expressions * Use StepNotImplementedError (was: NotImplementedError) * ADDED: steps.code formatter -- Shows steps with code-section. * ... ISSUES: * issue #1047: Step type is inherited for generic step if possible (submitted by: zettseb) * ... BACKWARD INCOMPATIBLE: * parser: No longer strips trailing colon from steps with text/table section.Low9/24/2024
v1.2.7.dev4behave: * CLEANUP: configuration -- tag_expression_protocol, show_bad_formats() * CLEANUP: configuration -- Refactor internals to make it more readable * REFACTOR: behave.matchers (StepMatcherFactory, ...) * NEW: behave.api.step_matchers * UPDATE: gherkin-languages.json / behave.i14n (language=be was added) * Use assertpy as assert-matcher (in some cases) * FIXED #1116: behave erroring in pretty format in pyproject.toml * FIXED #1120: Logging ignoring level set in setup_logging (submitLow7/12/2023
v1.2.7.dev3For details, see [CHANGES.rst](https://github.com/behave/behave/blob/main/CHANGES.rst#version-127-unreleased).Low7/9/2023

Dependencies & License Audit

Loading dependencies...

Similar Packages

robotframeworkGeneric automation framework for acceptance testing and robotic process automation (RPA)7.4.2
pre-commitA framework for managing and maintaining multi-language pre-commit hooks.v4.6.0
azure-core-tracing-opentelemetryMicrosoft Azure Azure Core OpenTelemetry plugin Library for Pythonazure-template_0.1.0b6187637
spdx-toolsSPDX parser and tools.0.8.5
lacesDjango components that know how to render themselves.0.1.2