我有一个非常简单的场景
from django.test import TestCase
class BaseTest(TestCase):
fixtures = ('users.json',)
...
class SpecificTest(BaseTest):
fixtures = ('transactions.json',)
...
事务对用户有一个FK,当SpecificTest尝试加载灯具时,我得到一个IntegrityError
IntegrityError: Problem installing fixtures:
The row in table 'app_transactions' with primary key '1' has an
invalid foreign key: app_transactions.user_id contains a value '30'
that does not have a corresponding value in app_user.id.
此错误表示在users.json
灯具之前未加载BaseTest
中加载的transactions.json
灯具(如您所料)。我的问题是,在子类化测试时加载灯具的正确方法是什么?
Django 1.7
答案 0 :(得分:2)
当您在子类中覆盖fixtures
时,替换灯具,它不会扩展它们。
您可以明确重复灯具:
class SpecificTest(BaseTest):
fixtures = ('users.json', 'transactions.json',)
或引用子类中的BaseTest.fixtures
:
class SpecificTest(BaseTest):
fixtures = BaseTest.fixtures + ('transactions.json',)