我正在测试一个不是由我自己编写的django应用程序,它使用两个灯具:initial_data.json
和testing.json
。两个灯具文件都包含冲突的数据(抛出完整性错误)。
为了进行测试,我已指定TestCase.fixtures = ['testing.json']
,但也加载了initial_data.json
。
如何避免在测试用例中加载initial_data.json
(不重命名)?
答案 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。