Breaking Changes
context.fixturesis now automatically isolated per Behave scope (feature, rule, scenario): fixtures loaded in one scenario no longer leak into the next. Fixtures set inbefore_all(),before_feature()orbefore_rule()still propagate to nested scopes. The manualcontext.fixtures = []reset is no longer needed.
Features and Improvements
- Cover Django 6.0, drop Python 3.9 and Django 4.2, 5.0 and 5.1
- Document how to configure a custom
LiveServerTestCasehost for remote browsers - Add unit tests for the
pageobjectmodule
Bugfixes
- Fix
RecursionErroron Django 4.1+ without--simple, caused by settings overrides piling up across scenarios - Fix double
base_urlwhenget_url()receives an absolute URL - Avoid
ContextMaskWarningby snapshottingcontext.fixturesin user mode
Features and Improvements
- Add notice to docs about upcoming automatic fixture reset (planned for v2.0.0)
Bugfixes
- Fix fixtures not being reset when set to empty list (Django 5.2+ only)
Features and Improvements
- Supports Python 3.14 (in combination with Django 5.2)
- Now depends on behave 1.3.3+
- Fix database transaction rollback (broken since Behave 1.2.7.dev8)
- Simplify the monkey-patch logic in environment.py again (removes backward-compatibility code)
Features and Improvements
- Overhaul "Getting Started" chapter in documentation
- Overhaul "Contributing" chapter in documentation
- Update external links in the documentation
Bugfixes
- Hardwire Behave 1.2.7.dev6 to avoid database transaction bug
- Handle new run_hook() signature in Behave 1.2.7.dev7 (see runner.py in https://github.com/behave/behave/commit/f4d5028 for the change)
Features and Improvements
- Cover Python 3.13 and Django 5.2, drop Python 3.8 (pyproject license field change requires setuptools 77)
Bugfixes
- Remediate Django 5.2 TestCase breaking change (TestCase classmethods)
- Fix test for Python 3.13 breaking change (argparse CLI output)
Features and Improvements
- Use ruff for linting and code style; reformat code base
- Migrate packaging from
setup.pyto purepyproject.toml. - Add instructions to measure test coverage to the documentation
- Cover Python 3.9 to 3.12 and Django 3.2, 4.2 and 5.0, drop Python 3.5, 3.6 and Django 2.2 and 3.0 support
- Bump Behave requirement to 1.2.7.dev6 (allows TOML support and option to change the Behave TestRunner)
- New option to change the Django TestRunner
Features and Improvements
- Add experimental Page Object pattern helpers
- Cover Python 3.8, drop Python 3.4 and Django 1.11 to 2.1 support
Bugfixes
- Replace deprecated multi_db by suggested
databasesattribute - Remove obsolete Python 2 compatibility code
Features and Improvements
- Add Bandit security linter to CI setup
- Minor refactorings to please linters
- Update and clarify documentation
- Cover Django 2.2 with test matrix, remove Django 2.0
Bugfixes
- Fix fixtures decorator behavior (reset between scenarios)
Features and Improvements
- Added option to set multi_db on TestCase
Bugfixes
- Made fixtures decorator compatible with newly released behave
Features and Improvements
- Added
django_readyhook for running setup code within the django environment
Features and Improvements
- Added decorator to load fixtures
- Updated django integration logic
Features and Improvements
- Added
--simplecommand line option to run tests using the regularTestCaseclass instead ofStaticLiveServerTestCase
Features and Improvements
- Behave's short form arguments are now accepted (e.g.
-ifor--include) - Added
--keepdbshort form argument, -k - Prefix conflicting command line options with
--behave
Bugfixes
- Fixed specifying paths didn't work
Features and Improvements
- Replace optparse with argparse
- Support Django 1.8 + 1.9 + 1.10
Features and Improvements
- Added the
--keepdbflag to reuse the existing test database instead of recreating it for every test run. (Django >= 1.8 only) - Overhaul tests to use Tox and pytest for a better testing experience.
Bugfixes
- Fixed bug where some behave commands do not work
Bugfixes
- Fixed bug where positional arguments don't get sent to behave.
Bugfixes
- Fixed bug where invalid arguments are passed onto behave, making the command fail to execute.
Features and Improvements
- Integration with
behaveis now done via monkey patching. Including theenvironment.before_scenario()andenvironment.after_scenario()function calls in yourenvironment.pyfile is no longer needed. - A new CLI option,
--use-existing-database, has been added. See the Configuration docs.
Bugfixes
- Calling
python manage.py behave --dry-rundoes not create a test database any longer.
Features and Improvements
context.get_url(). URL helper attached to context with built-in reverse resolution as a handy shortcut.
Features and Improvements
- Fixture loading. You can now load your fixtures by setting
context.fixtures. - behave-django now supports all versions of Django
Bugfixes
- The behave command should now correctly return non-zero exit codes when a test fails.
Features and Improvements
- You can now have a
.behavercin your project's root directory. You can specify where your feature directories are in this file, among other things. See the behave docs on configuration files. - Removed
BEHAVE\_FEATURESsetting in favor of using behave's configuration file
Features and Improvements
- Behave management command now accepts behave command line arguments
BEHAVE\_FEATURESsettings added for multiple feature directories
Bugfixes
- Removed test apps and projects from the release package
- Initial release