无法在Django测试中加载测试数据

1 投票
2 回答
715 浏览
提问于 2025-04-16 00:40

我有一个叫做 pta.apps.users 的应用,它在我的 settings.py 文件中的已加载应用设置里。

这个应用运行得很好,现在我想测试一下,所以我把 json 文件放在了我的 users 应用里的 fixtures 目录下。

我有一个测试可以正常运行,但这些 fixtures 却加载不出来。

from django.test import TestCase
from django.test.client import Client
from BeautifulSoup import BeautifulSoup

class SimpleTest(TestCase):

  fixtures = ['user.json']

  def setUp(self):
    self.c = Client()

  def test_parse_html(self):
    response = self.c.get('/users/login/', follow=True)
    soup = BeautifulSoup(response.content)
    self.assertEquals(soup.h1.renderContents(), 'Entrance')

我在输出中只看到 No fixtures found.。我使用的是 Django 1.2.1。希望能得到一些帮助。

2 个回答

1

你把你的数据文件放在哪里了?

这些数据文件应该放在你的应用程序目录里:

MyApp/fixtures/user.json

或者你需要在你的settings.py文件中指定一个外部的数据文件目录:

FIXTURE_DIRS = (
    'external_fixtures/',
)
0

要加载一个数据文件(叫做fixture),你需要手动调用它,方法是使用 loaddata 命令(就像你之前做的那样),或者把它命名为“initial_data”,比如 initial_data.sqlinitial_data.jsoninitial_data.yaml 等等,并把它放在你应用的fixtures目录里。

https://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

撰写回答