Switch Djblets's test suite to use pytest.
Review Request #11919 — Created Jan. 10, 2022 and submitted
Historically, we've used
noseas the test runner, with a custom test
runner script responsible for setting up a test run.Unfortunately,
nose1.x hasn't been updated in a long while, and isn't
compatible with modern versions of Python 3. The forks also don't
support Python 3 very well.nose2does, but is so different that it's
not a great option for us.Instead, we're moving to
pytest. This is a much more modern test
runner with a lot of interesting capabilities and a wide ecosystem of
plugins.We now use this and define what little test setup we still need in
conftest.py, which is where we can define hooks forpytestto load.We also use the
pytest-djangomodule, which is an officialpytest
plugin for setting up a Django environment.Developers can now run
pytestdirectly to run the test suite. The old
./tests/runtests.pystill works, but is deprecated, and merely wraps
pytestsanyway.Note that we still have a test runner we ship with Django that uses
nose. For now, this will continue to usenose, but we won't be using
it. We will need to evaluate a modernization or deprecation plan for
this.
Unit tests pass for all supported versions of Python.
- Change Summary:
-
Updated for Djblets 3.0.
- Commits:
-
Summary ID 24035fdce5a6d6dc0e34276e209ae4650c0be091 42fcf9d6be01902cbd6d67ae51daf3f332a467da - Branch:
-
release-2.xrelease-3.x