A py.test plugin providing access to a dummynet.
pytest-dummynet provides a py.test fixture for working with dummy-networks in pytest on Linux machines. By dummy-networks we refer to setups with network namespaces, virtual ethernets, etc.
The DummyNet class is a python wrapper for the linux ‘ip netns’ and ‘ip link’ tools. The methods of the class parse args directly to the command-line in your linux OS.
So far, Ubuntu and Debian are supported, but please make sure, that you have the iproute2 linux-package installed with:
apt-get install iproute2
Other Linux operating systems have not been tested, but feel free to open an issue if support is needed.
To install pytest-dummynet:
pip install pytest-dummynet
To make it easy to use in with pytest the DummyNet object can be injected into a test function by using the dummynet fixture.
def test_run_fail(dummynet): with dummynet.host() as shell: demo0 = shell.netns_add(name="namespace1") demo1 = shell.netns_add(name="namespace2") shell.link_veth_add(p1_name="peer1", p2_name="peer2")
The dummynet argument is an instance of the DummyNet class.
For a complete example of a local network setup see the test in ‘test/test_dummynet.py’.
You can try playing around with the class methods in dummynet.py and call the commands in self.shell.run(cmd) from the command-line. This can give a better idea of the functionality.
Edit NEWS.rst and wscript (set correct VERSION)
The main functionality is found in src/dummy_net.py and the corresponding unit test is in test/test_dummynet.py if you want to play/modify/fix the code this would, in most cases, be the place to start.
We try to make our projects as independent as possible of a local system setup. For example with our native code (C/C++) we compile as much as possible from source, since this makes us independent of what is currently installed (libraries etc.) on a specific machine.
The goal is to enable a work-flow where running:
./waf configure ./waf build --run_tests
Configures, builds and runs any available tests for a given project, such that you as a developer can start hacking at the code.
For Python project this is a bit unconventional, but we think it works well.
The tests will run automatically by passing --run_tests to waf:
This follows what seems to be “best practice” advise, namely to install the package in editable mode in a virtualenv.
Why use an src folder (https://hynek.me/articles/testing-packaging/). tl;dr you should run your tests in the same environment as your users would run your code. So by placing the source files in a non-importable folder you avoid accidentally having access to resources not added to the Python package your users will install…
Python packaging guide: https://packaging.python.org/distributing/
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for pytest_dummynet-2.1.0-py2.py3-none-any.whl