freshcrate
Skin:/
Home > Frameworks > pytest-socket

pytest-socket

Pytest Plugin to disable socket calls during tests

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

# pytest-socket [![PyPI current version](https://img.shields.io/pypi/v/pytest-socket.svg)](https://pypi.python.org/pypi/pytest-socket) [![Python Support](https://img.shields.io/pypi/pyversions/pytest-socket.svg)](https://pypi.python.org/pypi/pytest-socket) [![Tests](https://github.com/miketheman/pytest-socket/workflows/Python%20Tests/badge.svg)](https://github.com/miketheman/pytest-socket/actions?query=workflow%3A%22Python+Tests%22) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/miketheman/pytest-socket/main.svg)](https://results.pre-commit.ci/latest/github/miketheman/pytest-socket/main) [![Maintainability](https://api.codeclimate.com/v1/badges/1608a75b1c3a20211992/maintainability)](https://codeclimate.com/github/miketheman/pytest-socket/maintainability) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket?ref=badge_shield) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) A plugin to use with Pytest to disable or restrict `socket` calls during tests to ensure network calls are prevented. --- ## Features - Disables all network calls flowing through Python\'s `socket` interface. ## Requirements - [Pytest](https://github.com/pytest-dev/pytest) 6.2.5 or greater ## Installation You can install `pytest-socket` via [pip](https://pypi.python.org/pypi/pip/) from [PyPI](https://pypi.python.org/pypi): ```console pip install pytest-socket ``` or add to your `pyproject.toml` for [poetry](https://python-poetry.org/): ```ini [tool.poetry.dev-dependencies] pytest-socket = "*" ``` ## Usage Run `pytest --disable-socket`, tests should fail on any access to `socket` or libraries using socket with a `SocketBlockedError`. To add this flag as the default behavior, add this section to your [`pytest.ini`](https://docs.pytest.org/en/6.2.x/customize.html#pytest-ini): ```ini [pytest] addopts = --disable-socket ``` or add this to your [`setup.cfg`](https://docs.pytest.org/en/6.2.x/customize.html#setup-cfg): ```ini [tool:pytest] addopts = --disable-socket ``` or update your [`conftest.py`](https://docs.pytest.org/en/6.2.x/writing_plugins.html#conftest-py-plugins) to include: ```python from pytest_socket import disable_socket def pytest_runtest_setup(): disable_socket() ``` If you exceptionally want to enable socket for one particular execution pass `--force-enable-socket`. It takes precedence over `--disable-socket`. To enable Unix sockets during the test run (e.g. for async), add this option: ```ini [pytest] addopts = --disable-socket --allow-unix-socket ``` To enable specific tests use of `socket`, pass in the fixture to the test or use a marker: ```python def test_explicitly_enable_socket(socket_enabled): assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) @pytest.mark.enable_socket def test_explicitly_enable_socket_with_mark(): assert socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` To allow only specific hosts per-test: ```python @pytest.mark.allow_hosts(['127.0.0.1']) def test_explicitly_enable_socket_with_mark(): assert socket.socket.connect(('127.0.0.1', 80)) ``` or for whole test run ```ini [pytest] addopts = --allow-hosts=127.0.0.1,127.0.1.1 ``` ### Frequently Asked Questions Q: Why is network access disabled in some of my tests but not others? A: pytest's default fixture scope is "function", which `socket_enabled` uses. If you create another fixture that creates a socket usage that has a "higher" instantiation order, such as at the module/class/session, then the higher order fixture will be resolved first, and won't be disabled during the tests. Read more in [this excellent example](https://github.com/miketheman/pytest-socket/issues/45#issue-679835420) and more about [pytest fixture order here](https://docs.pytest.org/en/stable/fixture.html#fixture-instantiation-order). This behavior may change in the future, as we learn more about pytest fixture order, and what users expect to happen. ## Contributing Contributions are very welcome. Tests can be run with [pytest](https://github.com/pytest-dev/pytest), please ensure the coverage at least stays the same before you submit a pull request. ## License Distributed under the terms of the [MIT](http://opensource.org/licenses/MIT) license, "pytest-socket" is free and open source software [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmiketheman%2Fpytest-socket?ref=badge_large) ## Issues If you encounter any problems, please [file an issue](https://github.com/miketheman/pytest-socket/issues) along with a detailed description. ## References This [Pytest](https://github.com/pytest-dev/pytest) plugin was generated with [Cookiecutter](https://github.com/audreyr/cookiecutter) along with [\

Release History

VersionChangesUrgencyDate
0.8.0## What's Changed ### Enhancements - Block DNS resolution (`getaddrinfo`, `gethostbyname`) when sockets are disabled #482 - Support CIDR network ranges in `allow_hosts` #479 - Warn before raising on a blocked socket call #468 - Cache hostname resolutions during a test run #369 ### Changes - **Removed support for Python 3.8 and 3.9.** Python 3.10 is now the minimum. - Test against Python 3.13, 3.14, and free-threaded 3.13t/3.14t - Replaced Poetry with uv #429 - Added type hints High5/21/2026
0.7.0Imported from PyPI (0.7.0)Low4/21/2026
0.6.0## What's Changed * chore(deps): update dependency httpx to ^0.22.0 by @renovate in https://github.com/miketheman/pytest-socket/pull/113 * Add Change Log project URL by @scop in https://github.com/miketheman/pytest-socket/pull/115 * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/miketheman/pytest-socket/pull/116 * chore(deps): update dependency pytest to v7 by @renovate in https://github.com/miketheman/pytest-socket/pull/117 * chore(deps): update actions/setupLow2/3/2023
0.5.1## What's Changed * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/miketheman/pytest-socket/pull/104 * fix: don't break on doctests by @andreoliwa, @orf in https://github.com/miketheman/pytest-socket/pull/109 * chore(deps): update dependency starlette to ^0.18.0 by @renovate in https://github.com/miketheman/pytest-socket/pull/110 * chore: update make target to handle installation by @miketheman in https://github.com/miketheman/pytest-socket/pull/111 * chore: Low1/23/2022
0.5.0## What's Changed * docs: Fix syntax for setup.cfg by @llimllib in https://github.com/miketheman/pytest-socket/pull/77 * chore(dev): update development commands by @miketheman in https://github.com/miketheman/pytest-socket/pull/83 * Fix pytest-socket raises IndexError with httpx by @ollipa in https://github.com/miketheman/pytest-socket/pull/85 * test: move the reenable fixture to conftest by @miketheman in https://github.com/miketheman/pytest-socket/pull/86 * Switch to poetry-core by @fabafLow12/23/2021
0.4.1Include tests and configs in source distribution archive #69 https://github.com/miketheman/pytest-socket/compare/0.4.0...0.4.1 ## What's Changed * pyproject.toml: include tests in sdist archive by @kwshi in https://github.com/miketheman/pytest-socket/pull/69 ## New Contributors * @kwshi made their first contribution in https://github.com/miketheman/pytest-socket/pull/69 **Full Changelog**: https://github.com/miketheman/pytest-socket/compare/0.4.0...0.4.1Low8/28/2021
0.4.0Enhancements: * Enable Unix sockets selectively with --allow-unix-socket #54 * Test refactor, add CodeQL scanning * Correctly subclass socket.socket #50 * Add testing against Python 3.9, Dropped testing against Python 3.5 * Doc updates https://github.com/miketheman/pytest-socket/compare/0.3.5...0.4.0 ## What's Changed * chore(deps): update dependency pytest to v6 by @renovate in https://github.com/miketheman/pytest-socket/pull/44 * Create codeql-analysis.yml by @miketheman in httpLow3/30/2021
0.3.5Bugfix release. * Fix bug in marker evaluation #42 * Refactor tests for clarity https://github.com/miketheman/pytest-socket/compare/0.3.4...0.3.5 https://pypi.org/project/pytest-socket/0.3.5/ # NOTE This is the final release that supports Python 3.5Low5/31/2020
0.3.4Maintenance release. * Drop support for unsupported versions of Python #23 * Convert toolchain from pip/tox/twine to poetry * Replace TravisCI and Appveyor with GitHub Actions #36 * Update for correct test output #31 * Add renovatebot for dependecy updates #26 https://github.com/miketheman/pytest-socket/compare/0.3.3...0.3.4 https://pypi.org/project/pytest-socket/0.3.4/Low4/10/2020
0.3.3* Fix hostname check when unicode on Python 2.7.x #22 https://github.com/miketheman/pytest-socket/compare/0.3.2...0.3.3 https://pypi.org/project/pytest-socket/0.3.3/Low2/9/2019
0.3.2* Update support for Pytest 4.1.x * Test package on Python 3.7.x * Stop testing on pypy https://github.com/miketheman/pytest-socket/compare/0.3.1...0.3.2 https://pypi.org/project/pytest-socket/0.3.2/Low1/8/2019
0.3.1* Update minimum required pytest version https://github.com/miketheman/pytest-socket/compare/0.3.0...0.3.1 https://pypi.org/project/pytest-socket/0.3.1/Low7/16/2018
0.3.0* Add support for allowing specific lists of hosts via IP Addresses * Change the inherited exception class in tests * Add codeclimate to travis output * Add coverage reporting * Drop support for Python 3.3 https://github.com/miketheman/pytest-socket/compare/0.2.0...0.3.0 https://pypi.org/project/pytest-socket/0.3.0/Low7/15/2018
0.1.0* Initial public release https://pypi.org/project/pytest-socket/0.1.0/Low7/15/2017
0.2.0* Reorganized API, requires explicit activation * Added Python 3.x compatibility * Added ``ini`` setting * Test all Python versions * Relax py.test version requirement https://github.com/miketheman/pytest-socket/compare/0.1.0...0.2.0 https://pypi.org/project/pytest-socket/0.2.0/Low7/15/2017

Dependencies & License Audit

Loading dependencies...

Similar Packages

tqdmFast, Extensible Progress Meterv4.68.1
inspect-aiFramework for large language model evaluationsmain@2026-06-05
hypothesisThe property-based testing library for Pythonv6.155.2
bleachAn easy safelist-based HTML-sanitizing tool.main@2026-06-05
jupyter-clientJupyter protocol implementation and client librariesv8.9.0

More in Frameworks

langchainThe agent engineering platform
deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of ta
tqdmFast, Extensible Progress Meter
simBuild, deploy, and orchestrate AI agents. Sim is the central intelligence layer for your AI workforce.