我测试了一个不是我自己写的djang应用程序,它使用两个灯具:initial_data.json和testing.json。这两个夹具文件都包含冲突数据(抛出完整性错误)。测试时不加载'initial_data.json'灯具
为了测试,我已经指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加载了。
如何避免在测试用例中加载initial_data.json(不重命名它)?
我测试了一个不是我自己写的djang应用程序,它使用两个灯具:initial_data.json和testing.json。这两个夹具文件都包含冲突数据(抛出完整性错误)。测试时不加载'initial_data.json'灯具
为了测试,我已经指定了TestCase.fixtures = ['testing.json'],但是initial_data.json也被加载了。
如何避免在测试用例中加载initial_data.json(不重命名它)?
从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
您可能要考虑一下是否initial_data.json
东西是你的应用程序实际上需要。在运行syncdb
(生产中多久运行一次syncdb
?)后,用./manage.py loaddata production.json
“手动”加载生产数据并不困难,而且这样可以使加载测试设备变得更容易。
如果你想有一个没有初始数据表,该代码将帮助您:
编辑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无需加载初始数据。
等等...所以你正在编写一个你没写的应用程序的测试? – eternicode 2010-11-10 16:16:47