Test frameworks provide a mechanism to skip tests if their prerequisites are not met, by either calling dedicated methods (e.g:
unittest.TestCase.skipTest
, pytest.skip
, …) or using decorators (e.g: unittest.skip
,
pytest.mark.skip
, …)
Using a return
statement instead will make the test succeed, even though no assertion has been performed. It is therefore better to
flag the test as skipped
in such situation.
This rule raises an issue when a return
is performed conditionally at the beginning of a test method.
No issue will be raised if the return
is unconditional as S1763 already raises an issue in such case.
The supported frameworks are Pytest
and Unittest
.
Noncompliant code example
import unittest
class MyTest(unittest.TestCase):
def test_something(self):
if not external_resource_available():
return # Noncompliant
self.assertEqual(foo(), 42)
Compliant solution
import unittest
class MyTest(unittest.TestCase):
def test_something(self):
if not external_resource_available():
self.skipTest("prerequisite not met")
self.assertEqual(foo(), 42)