Python Django单元测试:TypeError:';非类型';对象是不可编辑的

Python Django单元测试:TypeError:';非类型';对象是不可编辑的,python,django,unit-testing,python-unittest,django-unittest,Python,Django,Unit Testing,Python Unittest,Django Unittest,python3 manage.py测试应用程序。收藏夹 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__.p

python3 manage.py测试应用程序。收藏夹

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

这通常发生在您期望从函数返回一个列表(或其他序列),但得到一个空的
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
>oops=None
>>>对于oops中的i:
...     打印i
... 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“非类型”对象不可编辑

向我们展示
apps.favorites
模块。John,你是说test\u models.py还是?请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。@DmitrySemenov根据Django文档,命令
python3 manage.py test apps.favorites
将发现并运行
apps.favorites
模块中的所有测试用例。因此,在没有看到该模块的情况下,我们无法帮助您诊断问题。因此,我删除了apps.favorites,然后从以前的修订版中恢复了它。测试是100%工作的,但是我在dirs上做了一个差分,它显示了零变化。非常尴尬!,就像我说的,前一天它还在工作,然后就停止了。
>>> 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