django TestCase中的Fixture继承

时间:2015-06-18 12:42:42

标签: django django-testing

我有一个非常简单的场景

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

1 个答案:

答案 0 :(得分:2)

当您在子类中覆盖fixtures时,替换灯具,它不会扩展它们。

您可以明确重复灯具:

class SpecificTest(BaseTest):
    fixtures = ('users.json', 'transactions.json',)

或引用子类中的BaseTest.fixtures

class SpecificTest(BaseTest):
    fixtures = BaseTest.fixtures + ('transactions.json',)