Block socket creation by host/port.
The intended use is for making sure your unit tests don’t make network connections. Activate sockfilter with a predicate like:
# only allow http connections to localhost def socket_address_allowed(address): return (address.host in ['localhost', '127.0.0.1'] and address.port == 80) sockfilter.enable(socket_address_allowed)
Any subsequent attempts to open a connection at an address not satisfying the predicate will raise sockfilter.SockFilterError.
from sockfilter import with_sockfiltering @with_sockfiltering(socket_address_allowed) def test_foo(): foo()
sockfiltering context manager
from sockfilter import sockfiltering def test_foo(): with sockfiltering(socket_address_allowed): foo()
enable and disable
import sockfilter from unittest import TestCase class FooTest(TestCase): def setUp(self): sockfilter.enable(socket_address_allowed) def tearDown(self): sockfilter.disable() def test_foo(self): foo()
Under the hood
Sockfilter works by monkey-patching Python’s socket library, inspired by HTTPretty.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.