AttributeError:'模块'对象没有属性'testing'

我正在运行这个命令:

python manage.py test project.apps.app1.tests 

并导致这个错误:

AttributeError:'模块'对象没有属性'testing'

以下是我的目录结构。 我也添加了app1到我安装的应用程序configuration。

 Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv super(Command, self).run_from_argv(argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 71, in execute super(Command, self).execute(*args, **options) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 88, in handle failures = test_runner.run_tests(test_labels) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 146, in run_tests suite = self.build_suite(test_labels, extra_tests) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 66, in build_suite tests = self.test_loader.loadTestsFromName(label) File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName parent, obj = obj, getattr(obj, part) AttributeError: 'module' object has no attribute 'tests' 

目录结构:

在这里输入图像说明

我终于想出了另一个问题。 问题是我的testing找不到导入。

它看起来像你得到上述错误,如果你的testing无法导入。 这是有道理的,因为testing套件不能导入破坏的testing。 至less我觉得这是怎么回事,因为我在我的testing文件中修复了导入,并且确实已经开始工作了。

为了validation你的testing用例,只需在python控制台中导入testing用例文件即可。

例:

 from project.apps.app1.tests import * 

使用:

./manage.py shell

其次是

import myapp.tests

find导入错误的性质。

上面的史蒂夫·布拉德肖的例子工程导入错误(感谢史蒂夫)。

其他types的错误(例如ValueError)也可能导致

 AttributeError: 'module' object has no attribute 'tests' 

看看这些错误是什么

 ./manage.py shell from myapp.tests import SomeTestCase t = SomeTestCase() 

对于我的情况,我需要在我的app/tests文件夹中创build一个空的__init__.py

我和克里斯有同样的错误。 我删除了旧的模型,然后运行tests.py,但另一个文件(views.py)仍然试图导入删除的模型。

当我拿出现在已经过时的import声明时,问题就解决了。

根据django文档在运行testing时 ,testing实用程序的默认行为是在任何名称以test开头的文件中查找所有testing用例(即unittest.TestCase的子类),自动构buildtesting用例集那些testing用例,并运行该套件。

所以试试这个: python manage.py test tests.py

得到了同样的错误,但在这里检查了所有的原因列表,没有解决我的问题。

最后弄明白,原因是一个导入但尚未使用的方法的名称是不正确的。 虽然这是一个愚蠢的错误,但却发生了。

确保您在脚本中使用的所有模块都没有损坏。 通过这个我的意思是在你的导入语句中检查拼写。

 # invalid import from app.model.notification import Notification # valid import from app.models.notification import Notification 

你可以通过在djano的交互式控制台中执行imports语句来testing你的模块。

 $root@13faefes8: python manage.py shell Type "help", "copyright", "credits" or "license" for more information (InteractiveConsole) >>> from app.model.notification import Notification Traceback (most recent call last): File "<console>", line 1, in <module> ImportError: No module named model.notification