pytest django 从 yaml 文件加载数据库数据

问题描述

我已使用 dumpdata django 命令将开发环境中的数据转储到 yaml 文件中。

我使用的是pytest框架,需要实现以下场景:

  • 在 pytest 会话开始期间 -> 即当我从命令行运行 pytest 时,应将 yaml 文件中的数据加载到我的测试数据库

是否有任何插件或钩子可以用来实现上述目标?

我使用的是 python 3.8、pytest 6.2.4、pytest-django 4.40、Django 3.0.5

解决方法

如果您使用的是 pytest-django 包,那么您可以通过在 conftest.py 中提供一个 django_db_setup fixture pytest 固定装置来为您的测试加载 Django 数据固定装置

import pytest

from django.core.management import call_command

@pytest.fixture(scope='session')
def django_db_setup(django_db_setup,django_db_blocker):
    with django_db_blocker.unblock():
        call_command('loaddata','my_fixture.yaml')