From 9d3b97fdf6a5ba90b3609cd4e3dfa240e1d03911 Mon Sep 17 00:00:00 2001 From: twjohns Date: Thu, 23 Apr 2026 14:15:57 -0400 Subject: [PATCH 1/2] Handle unittest.SkipTest during collection as error (#10821) --- src/_pytest/runner.py | 2 -- testing/test_unittest.py | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/_pytest/runner.py b/src/_pytest/runner.py index 18d3591abfe..a2d8db51e57 100644 --- a/src/_pytest/runner.py +++ b/src/_pytest/runner.py @@ -409,8 +409,6 @@ def collect() -> list[Item | Collector]: else: skip_exceptions = [Skipped] unittest = sys.modules.get("unittest") - if unittest is not None: - skip_exceptions.append(unittest.SkipTest) if isinstance(call.excinfo.value, tuple(skip_exceptions)): outcome = "skipped" r_ = collector._repr_failure_py(call.excinfo, "line") diff --git a/testing/test_unittest.py b/testing/test_unittest.py index 395c9fe647e..4b834c59add 100644 --- a/testing/test_unittest.py +++ b/testing/test_unittest.py @@ -1718,3 +1718,24 @@ def abstract2(self): pass result = pytester.runpytest() assert result.ret == ExitCode.OK result.assert_outcomes(passed=1) + +def test_unittest_skip_alias_misuse_fails(pytester): + pytester.makepyfile( + """ + import unittest + + broken = unittest.skip("broken") + + class MyTests(unittest.TestCase): + @broken + def test_good(self): + assert True + + @broken("bar") + def test_bad(self): + assert False + """ + ) + + result = pytester.runpytest() + result.assert_outcomes(errors=1, skipped=0) From 067fae65377dfe52c2e389cd44e124f12fd5da8d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 23 Apr 2026 18:54:15 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- testing/test_unittest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/testing/test_unittest.py b/testing/test_unittest.py index 4b834c59add..7cefbbe02b4 100644 --- a/testing/test_unittest.py +++ b/testing/test_unittest.py @@ -1719,6 +1719,7 @@ def abstract2(self): pass assert result.ret == ExitCode.OK result.assert_outcomes(passed=1) + def test_unittest_skip_alias_misuse_fails(pytester): pytester.makepyfile( """