build(deps-dev): update pytest requirement from ~=7.0 to ~=8.2
Updates the requirements on pytest to permit the latest version.
Release notes
Sourced from pytest's releases.
8.2.0
pytest 8.2.0 (2024-04-27)
Deprecations
#12069: A deprecation warning is now raised when implementations of one of the following hooks request a deprecated
py.path.localparameter instead of thepathlib.Pathparameter which replaced it:
pytest_ignore_collect{.interpreted-text role="hook"} - thepathparameter - usecollection_pathinstead.pytest_collect_file{.interpreted-text role="hook"} - thepathparameter - usefile_pathinstead.pytest_pycollect_makemodule{.interpreted-text role="hook"} - thepathparameter - usemodule_pathinstead.pytest_report_header{.interpreted-text role="hook"} - thestartdirparameter - usestart_pathinstead.pytest_report_collectionfinish{.interpreted-text role="hook"} - thestartdirparameter - usestart_pathinstead.The replacement parameters are available since pytest 7.0.0. The old parameters will be removed in pytest 9.0.0.
See
legacy-path-hooks-deprecated{.interpreted-text role="ref"} for more details.Features
#11871: Added support for reading command line arguments from a file using the prefix character
@, like e.g.:pytest @tests.txt. The file must have one argument per line.See
Read arguments from file <args-from-file>{.interpreted-text role="ref"} for details.Improvements
#11523:
pytest.importorskip{.interpreted-text role="func"} will now issue a warning if the module could be found, but raisedImportError{.interpreted-text role="class"} instead ofModuleNotFoundError{.interpreted-text role="class"}.The warning can be suppressed by passing
exc_type=ImportErrortopytest.importorskip{.interpreted-text role="func"}.See
import-or-skip-import-error{.interpreted-text role="ref"} for details.#11728: For
unittest-based tests, exceptions during class cleanup (as raised by functions registered withTestCase.addClassCleanup <unittest.TestCase.addClassCleanup>{.interpreted-text role="meth"}) are now reported instead of silently failing.#11777: Text is no longer truncated in the
short test summary infosection when-vvis given.#12112: Improved namespace packages detection when
consider_namespace_packages{.interpreted-text role="confval"} is enabled, covering more situations (like editable installs).#9502: Added
PYTEST_VERSION{.interpreted-text role="envvar"} environment variable which is defined at the start of the pytest session and undefined afterwards. It contains the value ofpytest.__version__, and among other things can be used to easily check if code is running from within a pytest run.Bug Fixes
#12065: Fixed a regression in pytest 8.0.0 where test classes containing
setup_methodand tests using@staticmethodor@classmethodwould crash withAttributeError: 'NoneType' object has no attribute 'setup_method'.Now the
request.instance <pytest.FixtureRequest.instance>{.interpreted-text role="attr"} attribute of tests using@staticmethodand@classmethodis no longerNone, but a fresh instance of the class, like in non-static methods.
... (truncated)
Commits
6bd3f31Tweak changelog for 8.2.09b6219bPrepare release version 8.2.0835765cMerge pull request #12130 from bluetech/fixtures-inline7e7503cunittest: report class cleanup exceptions (#12250)882c4dafixtures: inlinefail_fixturefunc2e8fb9ffixtures: extract a_check_fixturedefmethodacf2971fixtures: inline_getnextfixturedefinto_get_active_fixturedef3c77aecfixtures: move "request" check earlyd217d68fixtures: inline_compute_fixture_value530be28fixtures: use early return in_get_active_fixturedef- Additional commits viewable in compare view
You can trigger a rebase of this PR by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Note Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
pytest >= 8.0.0 is incompatible with pytest-lazy-fixture, will need some more extensive changes - see https://github.com/TvoroG/pytest-lazy-fixture/issues/65
pytest >= 8.0.0 is incompatible with pytest-lazy-fixture, will need some more extensive changes - see https://github.com/TvoroG/pytest-lazy-fixture/issues/65
Was just looking at this too 😞 I was having a little trouble making sense of some of the workarounds, but if you have an example of updating one test, I can definitely look at going through and updating the test cases.
Same here, did not understand the workaround and unfortunately no, I didn't look into this problem further. Thank you for the willingness though.
Before I saw this project using lazy-fixture (that I didn't know existed) I believe the more expected way to implement this by pytest would be to have the fixture return a function. That way at the beginning of your test is when you call the function which ensures accurate order of operations within the test. The problem we faced is the fact that parameterization calculations take place first and we expect files to be written and a directory changed to for the repo_* fixtures which causes unintended problems. If you wrap it in lazy-fixture then it is not evaluated until the last second when the test is executed. This also allowed us to pass varied fixtures in as parameters to the test.
But honestly until more PRs are closed out a large refactor of the testing will just cause a bunch of merge conflicts for all of us. I'm not concerned with it at this time, I have bigger fish to fry.
Superseded by #987.