-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: