freeipa/ipatests/test_ipatests_plugins/test_depr_frameworks.py
Stanislav Levin 8c7447fd42 pytest: Warn about unittest/nose/xunit tests
This Pytest plugin is intended to issue warnings on collecting
tests, which employ unittest/nose frameworks or xunit style.
For example, this may look like:
"""
test_a/test_xunit.py:25
  test_a/test_xunit.py:25: PytestDeprecationWarning: xunit style is deprecated

    def test_foo_bar(self):

test_b/test_unittest.py:7
  test_b/test_unittest.py:7: PytestDeprecationWarning: unittest is deprecated
    def test_foo_bar(self):
"""

To treat these warnings as errors it's enough to run Pytest with:
-W error:'xunit style is deprecated':pytest.PytestDeprecationWarning

Related: https://pagure.io/freeipa/issue/7989
Signed-off-by: Stanislav Levin <slev@altlinux.org>
Reviewed-By: Christian Heimes <cheimes@redhat.com>
2020-02-12 18:08:32 +02:00

100 lines
2.3 KiB
Python

#
# Copyright (C) 2019 FreeIPA Contributors see COPYING for license
#
import pytest
@pytest.fixture
def ipa_testdir(testdir):
"""
Create conftest within testdir.
"""
testdir.makeconftest(
"""
pytest_plugins = ["ipatests.pytest_ipa.deprecated_frameworks"]
"""
)
return testdir
@pytest.fixture
def xunit_testdir(ipa_testdir):
"""
Create xnit style test module within testdir.
"""
ipa_testdir.makepyfile("""
def setup_module():
pass
def teardown_module():
pass
def setup_function():
pass
def teardown_function():
pass
class TestClass:
@classmethod
def setup_class(cls):
pass
@classmethod
def teardown_class(cls):
pass
def setup_method(self):
pass
def teardown_method(self):
pass
def test_m(self):
pass
""")
return ipa_testdir
@pytest.fixture
def unittest_testdir(ipa_testdir):
"""
Create unittest style test module within testdir.
"""
ipa_testdir.makepyfile("""
import unittest
def setUpModule():
pass
def tearDownModule():
pass
class TestClass(unittest.TestCase):
@classmethod
def setUp(self):
pass
def tearDown(self):
pass
@classmethod
def setUpClass(cls):
pass
@classmethod
def tearDownClass(cls):
pass
def test_m(self):
pass
""")
return ipa_testdir
def test_xunit(xunit_testdir):
result = xunit_testdir.runpytest()
result.assert_outcomes(passed=1)
result.stdout.fnmatch_lines([
"* PytestDeprecationWarning: xunit style is deprecated in favour of "
"fixtures style",
"* 8 warning*",
])
def test_unittest(unittest_testdir):
result = unittest_testdir.runpytest()
result.assert_outcomes(passed=1)
result.stdout.fnmatch_lines([
"* PytestDeprecationWarning: unittest is deprecated in favour of "
"fixtures style",
"* 1 warning*",
])