在Django中,loaddata正常加载fixture但单元测试时无声失败

4 投票
1 回答
1203 浏览
提问于 2025-04-15 14:43

我可以通过使用 loaddata 来加载我的 Django 应用中的数据文件:

manage.py loaddata palamut

这个数据文件 palamut.yamlpalamut/fixtures/ 目录下。

我在 palamut/tests/ 目录下有一个单元测试模块 service_tests.py,它的内容如下:

import unittest
from palamut.models import *
from palamut.service import *
from palamut.pforms import *

class ServiceTest(unittest.TestCase):
    fixtures = ['palamut.yaml']

    def test_convert_vensim(self):
        game_definition = GameDefinition.objects.get(pk=1)

这个单元测试出现了以下错误:

DoesNotExist: GameDefinition matching query does not exist.

我调试了这个脚本,发现数据文件没有在单元测试模块中加载。

你有什么建议,能解释这个情况吗?

顺便提一下,测试日志里没有任何关于加载数据文件的内容。

1 个回答

9

你的测试用例应该是django.test.TestCase的一个实例,而不是unittest.TestCase的实例。

撰写回答