如何通过必要的数据来填充测试数据库



我需要在我的django项目中进行一些unit tests。问题在于,几乎每种用例都取决于预先填充的数据库对象。

例如,如果所有pre_save信号都成功,我想创建产品和测试。

from django.contrib.auth.models import User
from django.test import TestCase
from .models import Product

class ProductTestCase(TestCase):
    def setUp(self):
        self.user = User.objects.create(username='test_user')
        self.product = Product.objects.create(name='Test product',user=self.user)

    def test_product_exists(self):
        self.assertIsNotNone(self.product)
    def product_is_active_by_default(self):
        ...

我做不到,因为产品必须与User对象相关。但是我无法创建User对象,因为User必须具有相关的plan对象。我的生产数据库中有多个计划,其中一个计划是默认的,但是测试数据库中没有计划。

为了能够进行单元测试,我需要使用来自多个应用程序的多个对象进行预填充测试数据库。

我该怎么做?

您可以简单地使用Django固定装置: - (

首先用数据填充样本DB,然后用python manage.py dumpdata

导出数据

然后在您的一个应用程序中创建一个名为 fixtures的目录,然后将导出的JSON文件放在那里(命名tests.json或其他内容(

在您的测试类负载灯具中

class ProductTestCase(TestCase):
    fixtures = ['tests.json', ]

结帐django docs

ps:结帐工厂男孩(@gabriel muj(答案

我不建议使用固定装置,因为您每次更改模型时都需要维护它们。这是通过使用此库来创建测试对象的一种更好的方法

最新更新