Labs ICT
โญ Pro Login

Skip & SkipIf Decorators

Skipping tests under certain conditions

Skip & SkipIf Decorators

Skip decorators allow you to conditionally skip tests that shouldn't run in certain environments, with certain configurations, or while features are under development.

@unittest.skip

import unittest
import sys

class TestSkips(unittest.TestCase):
    @unittest.skip("Not implemented yet")
    def test_future_feature(self):
        pass

    @unittest.skip("Known bug #1234")
    def test_known_bug(self):
        pass

    @unittest.skip(reason="Requires database connection")
    def test_db_operation(self):
        pass

@unittest.skipIf / @unittest.skipUnless

class TestPlatform(unittest.TestCase):
    @unittest.skipIf(sys.platform == "win32", "Not supported on Windows")
    def test_unix_only(self):
        import os
        self.assertTrue(hasattr(os, 'fork'))

    @unittest.skipUnless(sys.platform.startswith("linux"), "Linux only")
    def test_linux_feature(self):
        pass

    @unittest.skipIf(
        not HAS_GPU,
        "GPU not available"
    )
    def test_gpu_computation(self):
        pass

Practical Examples

import os
import unittest

class TestEnvironment(unittest.TestCase):
    @unittest.skipUnless(
        os.getenv("API_KEY"),
        "API_KEY environment variable not set"
    )
    def test_api_call(self):
        import requests
        response = requests.get("https://api.example.com/data")
        self.assertEqual(response.status_code, 200)

    @unittest.skipIf(
        os.getenv("CI") == "true",
        "Flaky test, skip in CI"
    )
    def test_network_operation(self):
        pass

Key Takeaway

Use @unittest.skip for unconditional skips, @unittest.skipIf to skip when a condition is true, and @unittest.skipUnless to skip when a condition is false.

๐Ÿงช Quick Quiz

@unittest.skipIf(condition, reason) skips the test when: