A simple pytest plugin to disable network on socket level.
$ pip install pytest-network
pytest-network
has a flag --disable-network
that will raise an error
if tests will try to use socket.socket.connect
You can use it directly like:
$ python3 -m pytest --disable-network
or add this flag as the default behavior in your pytest.ini
:
[pytest]
addopts = --disable-network
Also you can directly disable network:
import requests
def test_network_request_raises_error(disable_network):
response = requests.get('https://github.com') # this will raise an exception
assert response.status_code == 200
or directly enable (if you have default --disable-network
flag):
import requests
def test_network_request_is_ok(enable_network):
response = requests.get('https://github.com')
assert response.status_code == 200 # this will pass
You can use test marks instead of fixtures: add @pytest.mark.disable_network
or @pytest.mark.enable_network
to disable or enable network in test.
To setup development environment you must first create a virtual environment. For example:
$ python3.8 -m venv <venv-name>
After that install all requirements:
$ pip install -r requirements.txt
And install plugin itself (inside project directory and virtual environment):
$ pip install -e .
Check that tests are running:
$ make test
We would love you to contribute to our project. It's simple:
- Create an issue with bug you found or proposal you have. Wait for approve from maintainer.
- Create a pull request. Make sure all checks are green.
- Fix review comments if any.
- Be awesome.
Here are useful tips:
- You can run all checks and tests with make check. Please do it before TravisCI does.
- We use BestDoctor python styleguide.
- We respect Django CoC. Make soft, not bullshit.