Django unittest: TypeError: 'NoneType' 对象不可迭代 [英] Django unittest: TypeError: 'NoneType' object is not iterable

查看:40
本文介绍了Django unittest: TypeError: 'NoneType' 对象不可迭代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

python3 manage.py test apps.favorites

回溯(最近一次调用最后一次):文件manage.py",第 10 行,在 <module> 中execute_from_command_line(sys.argv)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/__init__.py",第367行,在execute_e中实用程序.execute()文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/__init__.py",第359行,在执行中self.fetch_command(subcommand).run_from_argv(self.argv)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/commands/test.py",第29行,在run_vsuper(Command, self).run_from_argv(argv)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/base.py",第 294 行,在 run_from_argvself.execute(*args, **cmd_options)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/base.py",第345行,在执行中输出 = self.handle(*args, **options)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/core/management/commands/test.py",第72行,在手失败 = test_runner.run_tests(test_labels)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/test/runner.py",第 548 行,在 run_tests套件 = self.build_suite(test_labels, extra_tests)文件/home/dmitry/.pyenv/versions/p/lib/python3.5/site-packages/django/test/runner.py",第 466 行,在 build_suite测试 = self.test_loader.discover(start_dir=label, **kwargs)文件/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py",第341行,在discover中测试 = 列表(self._find_tests(start_dir,pattern))_find_tests 中的文件/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py",第 406 行从 self._find_tests(full_path, pattern, namespace) 产生文件/home/dmitry/.pyenv/versions/3.5.1/lib/python3.5/unittest/loader.py",第 398 行,在 _find_tests完整路径、模式、命名空间)TypeError: 'NoneType' 对象不可迭代

非常神秘的消息,没有细节.昨晚一切正常.

应用程序/收藏夹├── admin.py├── API│ ├── __init__.py│ ├── mixins.py│ ├── permissions.py│ └── __pycache__│ ├── __init__.cpython-35.pyc│ ├── mixins.cpython-35.pyc│ └── permissions.cpython-35.pyc├── app.py├── __init__.py├── manager.py├── 迁移│ ├── 0001_initial.py│ ├── __init__.py│ └── __pycache__│ ├── 0001_initial.cpython-35.pyc│ └── __init__.cpython-35.pyc├──模型.py├── __pycache__│ ├── admin.cpython-35.pyc│ ├── apps.cpython-35.pyc│ ├── __init__.cpython-35.pyc│ ├── manager.cpython-35.pyc│ └── models.cpython-35.pyc└── 测试├── __init__.py├── __pycache__│ ├── __init__.cpython-35.pyc│ └── test_models.cpython-35.pyc└── test_models.py7个目录,24个文件

解决方案

这通常发生在您期望从函数返回的列表(或其他序列),但得到 .如果您随后将此假定列表提供给需要迭代的内容,例如简单的 for 循环,则会显示错误.例如:

<预><代码>>>>哎呀 = 无>>>因为我哎呀:...打印我...回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中TypeError: 'NoneType' 对象不可迭代

python3 manage.py test 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

Very cryptic message with no details. Everything was working last night.

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

解决方案

This usually happens when you expect a list (or other sequence) returned from a function, but get an empty result of None. If you then give this supposed list to something that requires iteration, such as a simple for loop, you get the error shown. For instance:

>>> 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

这篇关于Django unittest: TypeError: 'NoneType' 对象不可迭代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆