我在django应用中测试视图。模型(用户,部门,报告等)之间存在很多OneToMany和ManyToMany关系。在创建我根本不使用的夹具时,需要花费大量时间来填充某些字段,如姓名,姓氏出生日期等。我怎么能忽略它们呢?还有什么是创建夹具时的最佳实践?我喜欢这样的
class TestReportModel(TestCase):
allow_database_queries = True
@classmethod
def setUpTestData(cls):
cls.report_id = 99
cls.factory = RequestFactory()
cls.user_with_access = User.objects.create(username="user1", password="password")
cls.employee = Employee.objects.create(user=cls.user_with_access, fio="name1 surname1",
date_of_birth="2012-12-12")
cls.indicator = Indicator.objects.create(context_id=10, set_id=10)
cls.ife = IndicatorsForEmployees.objects.create(employee=cls.employee, indicator=cls.indicator)
cls.report = Report.objects.create(owner=cls.ife)
cls.report.id = cls.report_id
cls.report.save()
cls.user_with_no_access = User.objects.create(username="user_with_no_access", password="password")
cls.employee_with_no_access = Employee.objects.create(user=cls.user_with_no_access, fio="name2 surname2",
date_of_birth="2018-12-12")
答案 0 :(得分:0)
听起来您需要在设置文件中指定测试数据库,使用syncdb加载fixture,然后使用keepdb标志。
在您的设置文件中,您可以在数据库中指定测试数据库名称。 https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATABASE-TEST
如果找不到此数据库,则在运行测试时将创建该数据库。创建fixture后,可以使用syncdb加载该db。 https://code.djangoproject.com/wiki/Fixtures#Fixtures
然后,当您运行单元测试时,将--keepdb
与它一起传递,数据库将在测试之间保持不变。
https://docs.djangoproject.com/en/2.0/ref/django-admin/#cmdoption-test-keepdb