Python Django的基本测试

Python Django的基本测试,python,django,unit-testing,testing,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 ====================================================================== ER

我正在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)
发生故障的模块可能会发生什么情况?

根据当前的情况(dev,1.7):

在Django 1.6中更改:

以前,Django的默认测试运行程序只在中发现测试
tests.py
models.py
中列出的Python包中的文件
已安装的应用程序

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

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

  • test.py
    重命名为
    tests.py
    -django将在
    tests.py
  • 升级到django 1.6-django将在
    test.py
  • 切换到第三方测试运行程序,如(软件包肯定会有帮助)。Django(在nose test discovery的帮助下)将在
    test.py
希望对您有所帮助。

根据当前版本(dev,1.7):

在Django 1.6中更改:

以前,Django的默认测试运行程序只在中发现测试
tests.py
models.py
中列出的Python包中的文件
已安装的应用程序

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

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

  • test.py
    重命名为
    tests.py
    -django将在
    tests.py
  • 升级到django 1.6-django将在
    test.py
  • 切换到第三方测试运行程序,如(软件包肯定会有帮助)。Django(在nose test discovery的帮助下)将在
    test.py

希望这能有所帮助。

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

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

$ python manage.py test app.tests.SimpleTest

然后尝试从项目目录中删除
\uuuu init\uuuuuuuupy
文件(存储
manage.py
文件的目录,但不是存储设置的目录)。

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

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

$ python manage.py test app.tests.SimpleTest

然后尝试从项目目录中删除
\uuuu init\uuuuuuuupy
文件(存储
manage.py
文件的目录,但不是存储设置的目录)。

Alecxe,我的文件名为tests.py,我之前说的是test.py是错的。实际上是tests.py,我的django版本是1.6。2@BernardoGarcia嗯,您是否有
INSTALLED_APPS
中列出的
app
?是的,我的app列在settings.py fileAlecxe中的INSTALLED_APPS指令中,我的文件名为tests.py,我之前说的是test.py是错的。实际上是tests.py,我的django版本是1.6。2@BernardoGarcia嗯,您是否有
INSTALLED_APPS
中列出的
app
?是的,我的应用程序列在settings.py文件中的INSTALLED_APPS指令中。正如您所说,测试对我有效。当你提到我时,我会查看链接,但是。。我还是不明白。。为什么我应该添加\u my\u app.tests.TestClass的名称?当您显式运行单个测试时,您会告诉测试运行者找到测试的确切位置。当您只需执行
$python manage.py测试时
,测试运行程序将尝试为您查找项目中的所有测试。但是,如果您的项目目录与已安装的应用程序同名,并且项目目录中有一个
\uuuu init\uuuuu.py
,它将无法找到测试。这有助于澄清吗?+1我刚刚意识到,简单的
\uuuu init\uuuuu.py
加上
manage.py
会让你陷入这个愚蠢的错误。这个测试对我来说就像你说的那样有效。当你提到我时,我会查看链接,但是。。我还是不明白。。为什么我应该添加\u my\u app.tests.TestClass的名称?当您显式运行单个测试时,您会告诉测试运行者找到测试的确切位置。当您只需执行
$python manage.py测试时
,测试运行程序将尝试为您查找项目中的所有测试。但是,如果您的项目目录与已安装的应用程序同名,并且项目目录中有一个
\uuuu init\uuuuu.py
,它将无法找到测试。这有助于澄清吗?+1我刚刚意识到,简单的
\uuuuu init\uuuuuuuuuuuuuuuuupy
加上
manage.py
会让你陷入这个愚蠢的错误。