【问题标题】:don't load 'initial_data.json' fixture when testing测试时不要加载“initial_data.json”夹具
【发布时间】:2010-11-10 15:42:21
【问题描述】:

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

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

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

【问题讨论】:

  • 等等...所以你正在为一个不是你写的应用程序编写测试?

标签: django testing


【解决方案1】:

引用自 Django 网站:

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

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

更多信息在这里:http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果您想要没有初始数据的表,此代码将帮助您:

      编辑tests.py:

      from django.core import management
      
      class FooTest(TestCase):
      
          @classmethod
          def setUpClass(cls):
              management.call_command('flush', interactive=False, load_initial_data=False)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 2011-01-12
        • 2012-07-21
        相关资源
        最近更新 更多