Django的单元测试:类型错误: 'NoneType' 对象不是可迭代

问题描述:

python3 manage.py测试apps.favoritesDjango的单元测试:类型错误: 'NoneType' 对象不是可迭代

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_e 
    utility.execute() 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/commands/test.py", line 29, in run_v 
    super(Command, self).run_from_argv(argv) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute 
    output = self.handle(*args, **options) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/commands/test.py", line 72, in hande 
    failures = test_runner.run_tests(test_labels) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/test/runner.py", line 548, in run_tests 
    suite = self.build_suite(test_labels, extra_tests) 
    File "/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/test/runner.py", line 466, in build_suite 
    tests = self.test_loader.discover(start_dir=label, **kwargs) 
    File "/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py", line 341, in discover 
    tests = list(self._find_tests(start_dir, pattern)) 
    File "/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py", line 406, in _find_tests 
    yield from self._find_tests(full_path, pattern, namespace) 
    File "/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py", line 398, in _find_tests 
    full_path, pattern, namespace) 
TypeError: 'NoneType' object is not iterable 
没有细节非常隐蔽消息。一切都在昨晚工作。
apps/favorites 
├── admin.py 
├── api 
│   ├── __init__.py 
│   ├── mixins.py 
│   ├── permissions.py 
│   └── __pycache__ 
│    ├── __init__.cpython-35.pyc 
│    ├── mixins.cpython-35.pyc 
│    └── permissions.cpython-35.pyc 
├── apps.py 
├── __init__.py 
├── managers.py 
├── migrations 
│   ├── 0001_initial.py 
│   ├── __init__.py 
│   └── __pycache__ 
│    ├── 0001_initial.cpython-35.pyc 
│    └── __init__.cpython-35.pyc 
├── models.py 
├── __pycache__ 
│   ├── admin.cpython-35.pyc 
│   ├── apps.cpython-35.pyc 
│   ├── __init__.cpython-35.pyc 
│   ├── managers.cpython-35.pyc 
│   └── models.cpython-35.pyc 
└── tests 
    ├── __init__.py 
    ├── __pycache__ 
    │   ├── __init__.cpython-35.pyc 
    │   └── test_models.cpython-35.pyc 
    └── test_models.py 

7 directories, 24 files 
+0

向我们展示'apps.favorites'模块。 –

+0

约翰,你的意思是一个test_models.py或? – DmitrySemenov

+0

请阅读并遵循帮助文档中的发布准则。 [最小,完整,可验证的示例](http://*.com/help/mcve)适用于此处。在发布您的MCVE代码并准确描述问题之前,我们无法为您提供有效的帮助。 我们应该能够将发布的代码粘贴到文本文件中,并重现您描述的问题。 – Prune

这通常发生在你预计列表(或其他序列)从函数返回,但得到的None空的结果。如果您随后将此列表列入需要迭代的内容,例如简单的for循环,则会显示错误。例如:

>>> oops = None 
>>> for i in oops: 
...  print i 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'NoneType' object is not iterable