加载Django测试数据

3 投票
3 回答
5047 浏览
提问于 2025-04-17 19:30

我在尝试在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'

还有unittest:

class TestEmployee(unittest.TestCase):

我一定是漏掉了什么明显的东西,有人能帮我指点一下吗?

3 个回答

0

在你的测试案例文件中,只需像下面这样引用你预先定义好的数据。你可以参考下面的图片来了解具体的写法。

1
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'
     ]
8

FIXTURE_DIRS 应该是一个列表或元组,而不是一个字符串。记住,定义元组的关键在于逗号,而不是括号。换句话说,你的设置应该是这样的:

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

另外,直接写死路径分隔符其实有点违背使用 os.path.join() 的初衷,所以最好是这样:

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

补充一下,最后你需要在类级别声明你的 TestCase fixtures,而不是在 setUp() 方法里...

撰写回答