Pour certains, cet article peut sembler inutile car ils vous diront qu’il suffit de couper le wifi sur son laptop pour ne plus avoir internet. Ce n’est pas faux, mais parfois et sans rentrer dans le détail, il n’est pas toujours possible de travailler offline pendant des heures.


Voici donc un tip pour simuler dans des tests unitaires la déconnexion d’internet. Il suffit de créer la fixture pytest suivante et de l’appeler dans vos tests.


En pré-requis, il suffit d’installer le package pytest-network.

import pytest
import socket

_original_connect = socket.socket.connect


def patched_connect(*args, **kwargs):
    ...
    # It depends on your testing purpose
    # You may want a exception, add here
    # If you test unconnectable situations
    # it can stay like this


@pytest.fixture
def enable_network():
    socket.socket.connect = _original_connect
    yield
    socket.socket.connect = patched_connect


@pytest.fixture
def disable_network():
    socket.socket.connect = patched_connect
    yield
    socket.socket.connect = _original_connect

Testé et approuvé, très utile en ce qui me concerne.