我需要在我的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(答案
我不建议使用固定装置,因为您每次更改模型时都需要维护它们。这是通过使用此库来创建测试对象的一种更好的方法