Override pydantic settings
Project description
Overrdie Pydantic Settings
Settings management in Pydantic makes it easy to override settings, like below.
# override settings
settgins.env = "production"
However, if you want to change the setting value in each test suite in your test code,
You need to change the values at the beginning of the test and roll back the values at the end of the test.
from app.core.config import settings # Pydantic settings
def test_settings():
# override setting value
env = settings.ENV
settings.ENV = "production"
# assertions
...
# rollback setting value, because in order not to affect other tests
settings.ENV = env
This causes a lot of code duplication. So, in order to remove the code that occurs repeatedly, created a decorator for tests.
Features
You can easily override the setting value by applying a decorator to the test function.
Also, when the test function is finished, the settings are automatically roll back.
That's all.
# for sync tests
@override_settings(settings=settings, ENV="production")
# for async tests
@async_override_settings(settings=settings, ENV="production")
Installation
pip install override-pydantic-settings
How to use
For sync tests
from pydantic import BaseSettings
from override_pydantic_settings import override_settings
class MySettings(BaseSettings):
ENV: str = "dev"
NAME: str = "Junki"
EMAIL: str = "na66421@gmail.com"
settings = MySettings()
@override_settings(settings=settings, ENV="production", NAME="Junki Yoon")
def test_function():
...
For async tests
@pytest.mark.asyncio
@async_override_settings(settings=settings, ENV="production", EMAIL="na86421@naver.com")
async def test_function():
...
Warning
You cannot override the setting value that does not exist.
Development
Compatible with Python >= 3.6
Python >= 3.10
, we can create async decorators using the
asnyc context manager.
It seems that async & sync
can be integrated into one function.
Running tests
$ python -m venv venv
(venv)$ source venv/bin/acitave
(venv)$ pip install -r requirements.txt
(venv)$ pytest
License
This project is licensed under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file override-pydantic-settings-1.0.1.tar.gz
.
File metadata
- Download URL: override-pydantic-settings-1.0.1.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0dbc552ff4e78e14156b89a7b67f6adbe8e8fd0105736861c5fe855a37594ab4 |
|
MD5 | 601b6d1a1a53ea9e60d99165cb44c3bf |
|
BLAKE2b-256 | 60580616d2f1cad65fcb9da3509e7ded79572032a72fd609b96897258bb36d17 |