{"library":"pytest-timeouts","title":"Pytest Timeouts Plugin","description":"pytest-timeouts is a Linux-only Pytest plugin (version 1.2.1) designed to precisely control the duration of various test case execution phases: setup, execution, and teardown. It's distinct from the `pytest-timeout` plugin and is specifically tailored for scenarios requiring SIGALRM-based test interruption on Linux systems. Releases are infrequent but active.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install pytest-timeouts"],"cli":null},"imports":["import pytest\n\n@pytest.mark.execution_timeout(1.5)\ndef test_something():\n    ..."],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import time\nimport pytest\n\n# Configure global timeouts in pytest.ini (optional):\n# [pytest]\n# setup_timeout = 0.3\n# execution_timeout = 0.5\n# teardown_timeout = 0.4\n\n@pytest.mark.setup_timeout(0.3)\n@pytest.mark.execution_timeout(0.5)\n@pytest.mark.teardown_timeout(0.4)\ndef test_timeout_phases():\n    print(\"\\nStarting setup (simulated)\")\n    time.sleep(0.1) # Simulate setup\n    print(\"Starting execution (simulated)\")\n    time.sleep(0.6) # This will exceed execution_timeout(0.5)\n    print(\"Starting teardown (simulated)\")\n    time.sleep(0.1) # Simulate teardown\n\ndef test_no_timeout():\n    print(\"\\nRunning test without explicit timeouts\")\n    time.sleep(0.1)\n\n# To run this test, save as test_example.py and execute:\n# pytest -v test_example.py","lang":"python","description":"This example demonstrates how to apply timeouts to the setup, execution, and teardown phases of a test using markers. The `test_timeout_phases` function's execution phase is intentionally set to exceed its defined timeout, which should cause a failure. You can also configure timeouts globally via `pytest.ini` or command-line options like `--setup-timeout`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"1.2.1","pypi_latest":"1.2.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.5,"avg_import_s":0.5,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.4,"mem_mb":12.2,"disk_size":"32.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.54,"mem_mb":12.2,"disk_size":"32.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.29,"mem_mb":12.2,"disk_size":"33M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.3,"mem_mb":12.2,"disk_size":"33M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.58,"mem_mb":12.9,"disk_size":"35.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.9,"mem_mb":12.9,"disk_size":"35.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.51,"mem_mb":12.9,"disk_size":"36M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.53,"mem_mb":12.9,"disk_size":"36M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.52,"mem_mb":12.8,"disk_size":"25.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.67,"mem_mb":12.8,"disk_size":"25.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.52,"mem_mb":12.8,"disk_size":"26M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.6,"mem_mb":12.8,"disk_size":"26M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.48,"mem_mb":11.8,"disk_size":"25.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.57,"mem_mb":11.8,"disk_size":"24.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.43,"mem_mb":11.8,"disk_size":"25M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.55,"mem_mb":11.8,"disk_size":"25M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.37,"mem_mb":11.2,"disk_size":"31.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.62,"mem_mb":11.2,"disk_size":"31.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.7,"import_time_s":0.34,"mem_mb":11.2,"disk_size":"32M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytest-timeouts","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.37,"mem_mb":11.2,"disk_size":"32M"}]}}