-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
pytest 8.2.2 breaks pytest-rerunfailures for tests that inherit unittest.TestCase #12424
Comments
Thank you for filing this with succinct replication steps. I spent hours yesterday trying to figure out why our CI/CD was failing |
We can probably accommodate rerunfailures here. I will take a look. |
I think switching pytest_runtest_makereport to the "new style" hook will make the issue go away BEFORE @pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
result = outcome.get_result()
if result.when == "setup":
# clean failed statuses at the beginning of each test/rerun
setattr(item, "_test_failed_statuses", {})
# create a dict to store error-check results for each stage
setattr(item, "_terminal_errors", {})
_test_failed_statuses = getattr(item, "_test_failed_statuses", {})
_test_failed_statuses[result.when] = result.failed
item._test_failed_statuses = _test_failed_statuses
item._terminal_errors[result.when] = _should_hard_fail_on_error(item, result) AFTER @pytest.hookimpl(wrapper=True)
def pytest_runtest_makereport(item, call):
result = yield
if result.when == "setup":
# clean failed statuses at the beginning of each test/rerun
setattr(item, "_test_failed_statuses", {})
# create a dict to store error-check results for each stage
setattr(item, "_terminal_errors", {})
_test_failed_statuses = getattr(item, "_test_failed_statuses", {})
_test_failed_statuses[result.when] = result.failed
item._test_failed_statuses = _test_failed_statuses
item._terminal_errors[result.when] = _should_hard_fail_on_error(item, result)
return result |
disregard, the issue is still there :^( |
PyTest 8.2.2 broke support for unittest retries, which should be fixed in 8.2.3 (see pytest-dev/pytest#12424).
pytest 8.2.2 breaks pytest-rerunfailures for tests that inherit unittest.TestCase
The code: (placed in
new_file.py
)Run command:
Expected output: (Using
pytest==8.2.1
/ previous version)Regression output: (Using
pytest==8.2.2
/ latest version)The error occurs during the
rerun
of the test.The failure line should be
self.fail()
. Instead, it'sassert testcase is not None
.This causes the
rerun
to never happen. (The test only ran the first time)Tested on a Mac. Here's the
pip list
:The text was updated successfully, but these errors were encountered: