2010-11-10 59 views
14

我测试了一个不是我自己写的djang应用程序,它使用两个灯具:initial_data.json和testing.json。这两个夹具文件都包含冲突数据(抛出完整性错误)。测试时不加载'initial_data.json'灯具

为了测试,我已经指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加载了。

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

+0

等等...所以你正在编写一个你没写的应用程序的测试? – eternicode 2010-11-10 16:16:47

回答

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

2

您可能要考虑一下是否initial_data.json东西是你的应用程序实际上需要。在运行syncdb(生产中多久运行一次syncdb?)后,用./manage.py loaddata production.json“手动”加载生产数据并不困难,而且这样可以使加载测试设备变得更容易。

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无需加载初始数据。