如何在测试中为第三方应用程序加载django的灯具?

时间:2015-07-30 03:59:08

标签: django testing fixtures

我知道可以在tests.py中加载灯具,如下所示:

fixtures = ['example.json']

Django自动搜索所有应用程序的fixture目录并加载灯具。

但是,我创建了一个名为'accounts'的可重用应用程序,在帐户中我也有fixtures / example.json文件。但是当我安装'accounts'应用程序并将其写入INSTALLED_APP设置时,无法加载夹具。我很好奇为什么会这样。

Django == 1.8.2

1 个答案:

答案 0 :(得分:0)

如果符合以下条件,您可以加载这些灯具:

  1. 如果应用程序属于可直接访问的相同项目结构,则可以访问您的应用程序工具
  2. 如果应用是由 setup.py 安装的,则package_data={'mypkg': ['fixtures/*.json']}应包含文件,具体取决于您的配置
  3. 您必须知道 virtualenv 在本地系统中的位置,这样您就可以在设置所在的设置中告诉Django,想象virtualenv是位于项目的父目录中,您可以指向这样的灯具:
  4.   

    Settings.py:

    ENV_DIR = os.path.join(os.path.dirname(__file__), '..')
    FIXTURE_DIRS = (
       os.path.join(VENV_DIR, "virtualenv/lib/python2.7/site-packages/yourapp/test/fixtures"),
    )
    

    请注意,它将取决于本地系统,而不是一个干净的解决方案,但是它可以工作,如果您在jenkins等远程系统上运行测试,请注意,因为您必须根据服务器部署设置更改此配置