https://github.com/wemake-services/pytest-modified-env
Pytest plugin to fail a test if it leaves modified `os.environ` afterwards.
https://github.com/wemake-services/pytest-modified-env
codequality pytest pytest-plugin python3 test testing tests unittest
Last synced: about 2 months ago
JSON representation
Pytest plugin to fail a test if it leaves modified `os.environ` afterwards.
- Host: GitHub
- URL: https://github.com/wemake-services/pytest-modified-env
- Owner: wemake-services
- License: mit
- Created: 2022-01-29T09:22:52.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-03-03T06:07:21.000Z (3 months ago)
- Last Synced: 2025-04-12T09:30:52.105Z (2 months ago)
- Topics: codequality, pytest, pytest-plugin, python3, test, testing, tests, unittest
- Language: Python
- Homepage: https://pypi.org/project/pytest-modified-env/
- Size: 213 KB
- Stars: 13
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-pytest - pytest-modified-env - Pytest plugin to fail a test if it leaves modified `os.environ` afterwards. (Plugins)
README
# pytest-modified-env
[](https://wemake.services)
[](https://github.com/wemake-services/pytest-modified-env/actions/workflows/test.yml)
[](https://pypi.org/project/pytest-modified-env/)
[](https://github.com/wemake-services/wemake-python-styleguide)Pytest plugin to fail a test if it leaves modified `os.environ` afterwards.
Example:
```python
import osdef 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
```bash
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:```python
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](https://github.com/wemake-services/pytest-modified-env/blob/master/LICENSE)