Django的基本测试

时间:2014-03-10 03:32:18

标签: python django unit-testing testing

我正在我的django项目中进行测试,但是当我在控制台中执行测试时,我得到以下输出

(course)bgarcial@el-pug:~/python_Devel/course/proyecto_clase2$ python manage.py test app
Creating test database for alias 'default'...
E
======================================================================
ERROR: proyecto_clase2.app.tests (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: proyecto_clase2.app.tests
Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/loader.py", line 252, in _find_tests
     module = self._get_module_from_name(name)
  File "/usr/lib/python2.7/unittest/loader.py", line 230, in _get_module_from_name
      __import__(name)
 ImportError: No module named app.tests


 ----------------------------------------------------------------------
 Ran 1 test in 0.000s

 FAILED (errors=1)
 Destroying test database for alias 'default'...
(course)bgarcial@el-pug:~/python_Devel/course/proyecto_clase2$

我的文件tests.py如下:

from django.test import TestCase

from .models import Categoria,Enlace
from django.contrib.auth.models import User

# Create your tests here.

    class SimpleTest(TestCase):
        def test_es_popular(self): 
            categoria = Categoria.objects.create(titulo='Categoria de prueba') 
            usuario = User.objects.create_user(username='julian', password='barbas')
            Enlace.objects.create(titulo='Prueba',enlace='http://ieee-wie.co', votos=0,
                              categoria=categoria, usuario=usuario)

与失败的模块相关的事情会发生什么?

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,并且能够使用this question的答案解决问题。测试运行器可能正在尝试从项目目录而不是它们所属的模块中导入测试。

尝试使用以下命令显式运行单个测试:

$ python manage.py test app.tests.SimpleTest

然后尝试从项目目录中删除__init__.py文件(如果您有manage.py文件存储的目录,但不是您的设置目录存储)。

答案 1 :(得分:1)

根据当前(dev,1.7)documentation

  

在Django 1.6中更改:

     

以前,Django的默认测试运行器只发现了测试   列出的Python包中的tests.pymodels.py个文件   INSTALLED_APPS

所以,看起来你正在使用django< 1.6并且,由于tests.py包下没有app,因此无法找到您的测试。

现在您有几种方法可以解决问题:

  • test.py重命名为tests.py - django将在tests.py
  • 中找到您的测试
  • 升级到django 1.6 - django将在test.py
  • 中找到您的测试
  • 切换到第三方测试运行器,如nosedjango_nose包肯定会有帮助)。 Django(在鼻子测试发现的帮助下)将在test.py
  • 中找到您的测试

希望有所帮助。