Description
When using the pytest-rerunfailures plugin and marking a test as "flaky", the pytest_runtest_logreport-hook is only called for the last occurrence of a "teardown" despite it still being run (evident in the output below).
pip list
| Package |
Version |
| exceptiongroup |
1.1.3 |
| iniconfig |
2.0.0 |
| packaging |
23.2 |
| pip |
21.2.4 |
| pluggy |
1.3.0 |
| pytest |
7.4.2 |
| pytest-rerunfailures |
12.0 |
| setuptools |
58.1.0 |
| tomli |
2.0.1 |
Python: 3.9.10
OS: osx 12.3 (M1 MacBook Pro)
Example:
# conftest.py
import pytest
@pytest.hookimpl(trylast=True)
def pytest_runtest_logreport(report):
print("\nWHEN: ", report.when)
# test_reportlog.py
import pytest
@pytest.fixture
def fix():
assert True
yield
print("\nTEARDOWN CALLED")
assert True
@pytest.mark.flaky(reruns=1)
def test_logreport(fix):
assert False
Output:
$ pytest -s
============================= test session starts ==============================
platform darwin -- Python 3.9.10, pytest-7.4.2, pluggy-1.3.0
rootdir: /Users/itsme/dev/pytest-logreport-rerunfailure
plugins: rerunfailures-12.0
collected 1 item
test_reportlog.py
TEARDOWN CALLED
WHEN: setup
R
WHEN: call
TEARDOWN CALLED
WHEN: setup
F
WHEN: call
WHEN: teardown
=================================== FAILURES ===================================
________________________________ test_logreport ________________________________
fix = None
@pytest.mark.flaky(reruns=1)
def test_logreport(fix):
> assert False
E assert False
test_reportlog.py:12: AssertionError
=========================== short test summary info ============================
FAILED test_reportlog.py::test_logreport - assert False
========================== 1 failed, 1 rerun in 0.02s ==========================
Description
When using the
pytest-rerunfailuresplugin and marking a test as "flaky", thepytest_runtest_logreport-hook is only called for the last occurrence of a "teardown" despite it still being run (evident in the output below).pip list
Python: 3.9.10
OS: osx 12.3 (M1 MacBook Pro)
Example:
Output:
pip listfrom the virtual environment you are using