Fix/improve test_terminal_reporter_writer_attr

It did not actually test that the attribute gets set.
This also checks the stacklevel etc.
This commit is contained in:
Daniel Hahler 2020-03-30 23:40:33 +02:00
parent 2d9dac95ec
commit ff0a091165
1 changed files with 17 additions and 8 deletions

View File

@ -1,8 +1,10 @@
import copy
import inspect
import pytest
from _pytest import deprecated
from _pytest import nodes
from _pytest.config import Config
@pytest.mark.filterwarnings("default")
@ -32,7 +34,7 @@ def test_pytest_collect_module_deprecated(attribute):
getattr(pytest.collect, attribute)
def test_terminal_reporter_writer_attr(pytestconfig):
def test_terminal_reporter_writer_attr(pytestconfig: Config) -> None:
"""Check that TerminalReporter._tw is also available as 'writer' (#2984)
This attribute has been deprecated in 5.4.
"""
@ -43,15 +45,22 @@ def test_terminal_reporter_writer_attr(pytestconfig):
except ImportError:
pass
terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter")
expected_tw = terminal_reporter._tw
original_tw = terminal_reporter._tw
with pytest.warns(pytest.PytestDeprecationWarning):
assert terminal_reporter.writer is expected_tw
with pytest.warns(pytest.PytestDeprecationWarning) as cw:
assert terminal_reporter.writer is original_tw
assert len(cw) == 1
assert cw[0].filename == __file__
with pytest.warns(pytest.PytestDeprecationWarning):
terminal_reporter.writer = expected_tw
assert terminal_reporter._tw is expected_tw
new_tw = copy.copy(original_tw)
with pytest.warns(pytest.PytestDeprecationWarning) as cw:
terminal_reporter.writer = new_tw
try:
assert terminal_reporter._tw is new_tw
finally:
terminal_reporter.writer = original_tw
assert len(cw) == 2
assert cw[0].filename == cw[1].filename == __file__
@pytest.mark.parametrize("plugin", sorted(deprecated.DEPRECATED_EXTERNAL_PLUGINS))