pytest-modified-env

wemake.services
Build Status
Python Version
wemake-python-styleguide

Pytest plugin to fail a test if it leaves modified os.environ afterwards.

Example:

import os

def test_that_modifies_env() -> None:
    os.environ['CUSTOM_ENV'] = '1'

With pytest-modified-env plugin installed, this test will fail:

___________________________ test_that_modifies_env ____________________________
test_that_modifies_env:4: in pytest_runtest_call
E   RuntimeError: os.environ was changed

Because it adds CUSTOM_ENV inside a test and does not clean it up.
In theory it can affect other tests and tests should be isolated!

Installation

pip install pytest-modified-env

Extras

In some cases test still might modify the env in this way.
But, it needs an explicit approval for that:

import os
import pytest

@pytest.mark.modify_env()
def test_that_modifies_env() -> None:
    os.environ['CUSTOM_ENV'] = '1'

This test won’t fail, eventhough it adds CUSTOM_ENV,
because it has modifies_env marker.

License

MIT

GitHub

View Github