Pytest удалить БД после испытаний - PullRequest
0 голосов
/ 10 октября 2019

У меня есть набор тестов в pytest-django, и я хочу создать базу данных в начале теста, а затем удалить его, как только тест будет завершен, чтобы смоделировать сценарий без сохранения огромного куска данных. Любая помощь будет оценена. Заранее спасибо!

1 Ответ

0 голосов
/ 11 октября 2019

Воспользуйтесь преимуществом демонтажа прибора , используя оператор yield вместо return. Это позволяет вам настроить базу данных, вернуть любые данные, если вы хотите, а затем выполнить любую очистку. Если вы хотите, чтобы это выполнялось для каждого теста, независимо от того, была ли функция теста объявлять использование прибора или нет, установите autouse на True.

@pytest.fixture(autouse=False)
def db():
    # Setup DB here

    # Yield some data, database connection or nothing at all
    yield None

    # Delete DB here when the test ends

def test_something(db):
    # Database will be ready here and db will contain whatever
    # db() function yields. With autouse=True you don't need to
    # set the db fixture as the function param.
    pass
...