override-pydantic-settings 1.0.1

Last updated:

0 purchases

override-pydantic-settings 1.0.1 Image
override-pydantic-settings 1.0.1 Images
Add to Cart

Description:

overridepydanticsettings 1.0.1

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 = "[email protected]"


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="[email protected]")
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.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.