测试时不要加载'initial_data.json'夹具

时间:2010-11-10 15:42:22

标签: django testing

我正在测试一个不是由我自己编写的django应用程序,它使用两个灯具:initial_data.jsontesting.json。两个灯具文件都包含冲突的数据(抛出完整性错误)。

为了进行测试,我已指定TestCase.fixtures = ['testing.json'],但也加载了initial_data.json

如何避免在测试用例中加载initial_data.json(不重命名)?

3 个答案:

答案 0 :(得分:6)

从Django网站引用:

  

如果您创建一个名为的夹具   initial_data。[xml / yaml / json],那   每次你都会加载夹具   运行syncdb。这非常   方便,但要小心:记住   数据将每次刷新   你运行syncdb的时间。所以不要使用   您想要的数据的initial_data   编辑。

所以我猜没有办法说“好吧,不要只加载一次初始数据”。也许你可以编写一个重命名文件的短bash脚本。否则你必须深入研究Django代码。

此处有更多信息:http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

答案 1 :(得分:2)

您可能想要考虑initial_data.json是否是您的应用实际需要的内容。在运行./manage.py loaddata production.json之后用syncdb“手动”加载生产数据并不困难(无论如何,你在生产中运行syncdb的频率如何?),这会使你的测试加载夹具更容易。

答案 2 :(得分:2)

如果您希望表格中没有初始数据,此代码可以帮助您:

编辑tests.py:

from django.core import management

class FooTest(TestCase):

    @classmethod
    def setUpClass(cls):
        management.call_command('flush', interactive=False, load_initial_data=False)

这将在不加载初始数据的情况下再次删除您的数据和syncdb。