2011-05-17 63 views
4

我终于决定为我的所有代码创建单元测试。那就是我试图根据我的模型创建灯具来测试我的功能。在Django上测试应用程序时找不到灯具

我已经使用dumpdata命令创建了一个json fixture并将其放置在我的应用程序的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) 

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

python2.7 manage.py test myapp 

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

我跑的Django的开发版本的最新修订版,并注意到基于文档我应该导入单元测试使用:

from django.utils import unittest

然而,当我这样做,它抱怨说, unittest无法导入。这就是为什么我直接从我工作的python路径导入 unittest。

我试图模拟django模型对象之前,但我认为使用灯具测试Django应用比使用模拟库更好。任何想法如何加载灯具?

在此先感谢。

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

编辑:我得到了它从以下进口TestCase的工作:

from django.test import TestCase 

回答

5

有一对夫妇可能有帮助的东西:

  1. 您可以使用--verbosity = 2运行测试来查看哪些目录django看起来像我n为装置。
  2. django TestCase是django推荐使用的,与单元测试相反。
  3. 您的夹具目录/文件位于何处?如果它不在您的应用程序中,您必须在设置文件中指定一个夹具目录。
+0

我跑使用你提到的详细程度选项进行测试。它正在寻找initial_data灯具,并不关心我在测试中的灯具列表中写的内容。我得到了很多以下错误: – mohi666 2011-05-17 18:56:21

+0

尝试'/home/myname/public_html/mysite/../mysite/myapp/fixtures'为initial_data.json夹具'initial_data'... 没有json夹具'initial_data'in'/家用/ MYNAME /的public_html/mysite的/../ mysite的/ MYAPP /灯具。 – mohi666 2011-05-17 18:57:30

0

你检查是否在灯具存在的路径是提供:

settings.FIXTURE_DIRS = ('/path/to/proj_folder/fixtures/',) 
0

我有名字问题。即使我在我的夹具目录下的应用程序文件夹下的文件下面的代码将无法正常工作。

fixtures = ['initial_data2.json']

然后,我将导入语句更改为刚刚工作的下方。

from django.test import TestCase

-1

只是为了确认TestCase的import语句,打破找到任何灯具 ,但在其他方面的工作,这样以来它尝试没有固定负荷

from django.utils.unittest import TestCase 

只是不引发错误...不使用它......作为建议使用

from django.test import TestCase 
0

我有同样的问题,而且它没有为我工作的原因是,我对我的初始数据文件没有扩展名。

我所做的:

manage.py dumpdata > initial_data 
manage.py loaddata initial_data 

哪个不工作,因为有上initial_data没有扩展名的,然而,这并不工作:

mv initial_data initial_data.json 
manage.py loaddata --verbosity=2 initial_data.json