在Django上测试应用程序时没有找到任何装置

moh*_*666 5 testing django unit-testing fixtures

我终于决定为我的所有代码创建单元测试.那就是我正在尝试根据我的模型创建灯具来测试我的功能.

我使用dumpdata命令创建了一个json fixture,并将它放在我的app上的fixtures目录下.以下是我测试的代码:

import unittest
from mysite.myapp.models import Post

class RatingTestCase(unittest.TestCase):
  fixtures = [
      'posts.json',
  ]

def test_me(self):
  p = Post.objects.all()
  self.assertTrue(p)
Run Code Online (Sandbox Code Playgroud)

我在Arch Linux机器上使用以下命令运行我的测试:

python2.7 manage.py test myapp
Run Code Online (Sandbox Code Playgroud)

它创建一个sqlite数据库并安装所有表和indeces,但最后它说没有找到夹具,它说我的测试失败,因为它没有找到任何数据.

我正在运行Django开发版的最新版本,并注意到根据文档,我应该使用以下方法导入unittest:

from django.utils import unittest

但是,当我这样做时,它抱怨无法导入unittest.这就是我直接从我的python路径导入unittest的原因.

我以前试过模拟django模型对象,但我认为使用fixture来测试Django应用比使用模拟库更好.知道如何加载灯具吗?

提前致谢.

编辑:如果我将我的灯具名称更改为initial_data.json,它将在每次运行我的测试时加载它.但是,我仍然需要有多个灯具名称来运行不同的测试.

编辑:我通过从以下导入TestCase得到它:

from django.test import TestCase
Run Code Online (Sandbox Code Playgroud)

dm0*_*514 5

有几件事可以帮助:

  1. 您可以使用--verbosity = 2运行测试,以查看django查找夹具的目录.
  2. django TestCase是django建议使用的,与unittest相反.
  3. 您的夹具目录/文件位于何处?如果它不在你的应用程序中,你必须在设置文件中指定一个fixture目录.