【问题标题】:Django unittest: TypeError: 'NoneType' object is not iterable [closed]Django unittest:TypeError:'NoneType'对象不可迭代[关闭]
【发布时间】:2017-05-25 17:45:11
【问题描述】:

python3 manage.py 测试apps.favorites

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

【问题讨论】:

  • 向我们展示apps.favorites 模块。
  • 约翰,你是说 test_models.py 还是?
  • 请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
  • @DmitrySemenov 根据 Django 文档,命令python3 manage.py test apps.favorites 将发现并运行apps.favorites 模块中的所有测试用例。因此,如果不查看该模块,我们将无法帮助您诊断您的问题。
  • 所以我删除了apps.favorites,然后从以前的版本中恢复了它。测试工作 100%,但我在 dirs 上做了一个差异,它显示零更改。非常尴尬!,就像我说它在前一天工作然后停止了。

标签: python django unit-testing python-unittest django-unittest


【解决方案1】:

这通常发生在您期望从函数返回的列表(或其他序列)但得到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

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 2013-12-01
    • 2016-02-08
    • 2020-05-06
    • 1970-01-01
    • 2020-03-23
    • 2013-12-01
    • 2012-08-25
    相关资源
    最近更新 更多