Pytest Plugin to disable socket calls during tests
Project description
A plugin to use with Pytest to disable or restrict socket calls during tests to ensure network calls are prevented.
This Pytest plugin was generated with Cookiecutter along with @hackebrot’s Cookiecutter-pytest-plugin template.
Features
Disables all network calls flowing through Python’s socket interface.
Requirements
Pytest 3.6.3 or greater
Installation
You can install “pytest-socket” via pip from PyPI:
$ pip install 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 or setup.cfg:
[pytest] addopts =
--disable-socketor update your conftest.py to include:
from pytest_socket import disable_socket def pytest_runtest_setup(): disable_socket()
To enable specific tests use of socket, pass in the fixture to the test or use a marker:
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:
@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
[pytest] addopts =
--allow-hosts=127.0.0.1,127.0.1.1
Contributing
Contributions are very welcome. Tests can be run with pytest, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the MIT license, “pytest-socket” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
References
This plugin came about due to the efforts by @hangtwenty solving a StackOverflow question, then converted into a pytest plugin by @miketheman.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_socket-0.3.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 405af0fcc934a82d3a4a3f45c7b059f8a353a30b4324bcd81834393bf47aae9f |
|
MD5 | f453a9892d318b36858836d268e44f19 |
|
BLAKE2b-256 | cccc24c665c32b1ba3577c6005bf911a054ae1ac655e431e60b1962a844e053f |