AttributeError:'module'对象没有属性'tests'

Chr*_*ris 95 python django python-2.7 python-unittest

我正在运行此命令:

python manage.py test project.apps.app1.tests
Run Code Online (Sandbox Code Playgroud)

它会导致此错误:

AttributeError:'module'对象没有属性'tests'

下面是我的目录结构.我还在我安装的应用配置中添加了app1.

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'
Run Code Online (Sandbox Code Playgroud)

目录结构:

在此输入图像描述

Chr*_*ris 175

我终于想出了另一个问题.问题是我的测试无法找到导入.

如果您的测试无法导入,看起来您会收到上述错误.这是有道理的,因为测试套件无法导入损坏的测试.至少我认为这是正在发生的事情,因为我在我的测试文件中修复了导入,确定它开始工作了.

要验证您的测试用例,请尝试在python控制台中导入测试用例文件.

例:

from project.apps.app1.tests import *
Run Code Online (Sandbox Code Playgroud)


Ste*_*haw 34

使用:

./manage.py shell

其次是

import myapp.tests

找到导入错误的性质.


tmi*_*min 17

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


luk*_*aus 6

Steve Bradshaw上面的例子适用于导入错误(感谢Steve).

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

AttributeError: 'module' object has no attribute 'tests'
Run Code Online (Sandbox Code Playgroud)

看看这些错误是什么

./manage.py shell
from myapp.tests import SomeTestCase
t = SomeTestCase()
Run Code Online (Sandbox Code Playgroud)


Dou*_*phy 5

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

当我取出现已过时的导入语句时,问题解决了。