我正在我的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)
与失败的模块相关的事情会发生什么?
答案 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.py
和models.py
个文件INSTALLED_APPS
。
所以,看起来你正在使用django< 1.6并且,由于tests.py
包下没有app
,因此无法找到您的测试。
现在您有几种方法可以解决问题:
test.py
重命名为tests.py
- django将在tests.py
test.py
test.py
希望有所帮助。