【问题标题】:Loading Fixtures Django加载夹具 Django
【发布时间】:2013-03-06 22:19:34
【问题描述】:

我正在尝试在我的 Django 测试中加载一些固定装置,但它们似乎没有加载。

在我的 settings.py 中,我指定:

FIXTURE_DIRS = (os.path.join(PROJECT_DIR, 'dhtmlScheduler\\fixtures\\'))

现在,在我的测试用例中:

def setUp(self):
    fixtures = ['users.json', 'employee.json']

我还应该提到我正在使用 Nose 测试运行器:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

和单元测试:

class TestEmployee(unittest.TestCase):

我一定遗漏了一些明显的东西,有人能指出我正确的方向吗?

【问题讨论】:

  • 与问题无关:为您的目录使用原始字符串:r'dhtmlScheduler\fixtures\'。更容易阅读。 :)

标签: python django django-fixtures


【解决方案1】:

FIXTURE_DIRS 应该是一个列表或元组,而不是一个字符串。请记住,定义元组文字的是逗号,而不是括号,IOW 你的设置应该是

FIXTURE_DIRS = (
    os.path.join(PROJECT_DIR, 'dhtmlScheduler\\fixtures\\'), 
    )

作为旁注,硬编码路径分隔符会破坏使用 os.path.join() 的全部意义,所以这应该是:

FIXTURE_DIRS = (
    os.path.join(PROJECT_DIR, 'dhtmlScheduler', 'fixtures'), 
    )

编辑:最后,您必须在类级别声明您的 TestCase 固定装置,而不是在 setUp() 方法中...

【讨论】:

  • 感谢分隔符的提示,但我仍然无法加载测试。
【解决方案2】:
FIXTURE_DIRS = (os.path.join(PROJECT_ROOT, 'fixtures'),)

或者

from django.test import TestCase

class MyTestCase(TestCase):
     fixtures = [
        '/myapp/fixtures/users.json', 
        '/myapp/fixtures/employee.json'
     ]

【讨论】:

    【解决方案3】:

    在您的测试用例文件中,只需以这种方式引用您的预定义夹具,如下所示

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 2015-01-01
      • 2012-02-24
      • 1970-01-01
      • 2018-02-07
      • 2013-10-18
      • 2018-03-03
      • 2011-01-12
      • 2011-04-18
      相关资源
      最近更新 更多