2020年9月10日木曜日

Djangoチュートリアル5でのテスト実行時エラー

テストの実行

https://docs.djangoproject.com/ja/3.1/intro/tutorial05/#running-tests

上記のDjangoの自動テストのチュートリアルにて、以下のコマンドを実行。

  1. $ python manage.py test polls

実行後、下記のエラーメッセージが表示された。

  1. $ python manage.py test polls
  2. Creating test database for alias 'default'...
  3. Traceback (most recent call last):
  4. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
  5. self.execute(*args, **cmd_options)
  6. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
  7. output = self.handle(*args, **options)
  8. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/commands/test.py", line 53, in handle
  9. failures = test_runner.run_tests(test_labels)
  10. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/runner.py", line 684, in run_tests
  11. old_config = self.setup_databases(aliases=databases)
  12. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/runner.py", line 604, in setup_databases
  13. return _setup_databases(
  14. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/utils.py", line 169, in setup_databases
  15. connection.creation.create_test_db(
  16. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 60, in create_test_db
  17. self.connection.close()
  18. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
  19. return func(*args, **kwargs)
  20. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 261, in close
  21. if not self.is_in_memory_db():
  22. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 380, in is_in_memory_db
  23. return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  24. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py", line 12, in is_in_memory_db
  25. return database_name == ':memory:' or 'mode=memory' in database_name
  26. TypeError: argument of type 'PosixPath' is not iterable
  27.  
  28. During handling of the above exception, another exception occurred:
  29.  
  30. Traceback (most recent call last):
  31. File "manage.py", line 22, in <module>
  32. main()
  33. File "manage.py", line 18, in main
  34. execute_from_command_line(sys.argv)
  35. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
  36. utility.execute()
  37. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
  38. self.fetch_command(subcommand).run_from_argv(self.argv)
  39. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
  40. super().run_from_argv(argv)
  41. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 341, in run_from_argv
  42. connections.close_all()
  43. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/utils.py", line 230, in close_all
  44. connection.close()
  45. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
  46. return func(*args, **kwargs)
  47. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 261, in close
  48. if not self.is_in_memory_db():
  49. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 380, in is_in_memory_db
  50. return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  51. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py", line 12, in is_in_memory_db
  52. return database_name == ':memory:' or 'mode=memory' in database_name
  53. TypeError: argument of type 'PosixPath' is not iterable
  54. MackBook-Pro-2013:mysite dev_user$
  55. MackBook-Pro-2013:mysite dev_user$
  56. MackBook-Pro-2013:mysite dev_user$ python manage.py test polls
  57. Creating test database for alias 'default'...
  58. Traceback (most recent call last):
  59. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
  60. self.execute(*args, **cmd_options)
  61. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
  62. output = self.handle(*args, **options)
  63. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/commands/test.py", line 53, in handle
  64. failures = test_runner.run_tests(test_labels)
  65. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/runner.py", line 684, in run_tests
  66. old_config = self.setup_databases(aliases=databases)
  67. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/runner.py", line 604, in setup_databases
  68. return _setup_databases(
  69. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/test/utils.py", line 169, in setup_databases
  70. connection.creation.create_test_db(
  71. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 60, in create_test_db
  72. self.connection.close()
  73. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
  74. return func(*args, **kwargs)
  75. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 261, in close
  76. if not self.is_in_memory_db():
  77. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 380, in is_in_memory_db
  78. return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  79. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py", line 12, in is_in_memory_db
  80. return database_name == ':memory:' or 'mode=memory' in database_name
  81. TypeError: argument of type 'PosixPath' is not iterable
  82.  
  83. During handling of the above exception, another exception occurred:
  84.  
  85. Traceback (most recent call last):
  86. File "manage.py", line 22, in <module>
  87. main()
  88. File "manage.py", line 18, in main
  89. execute_from_command_line(sys.argv)
  90. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
  91. utility.execute()
  92. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
  93. self.fetch_command(subcommand).run_from_argv(self.argv)
  94. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
  95. super().run_from_argv(argv)
  96. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/core/management/base.py", line 341, in run_from_argv
  97. connections.close_all()
  98. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/utils.py", line 230, in close_all
  99. connection.close()
  100. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
  101. return func(*args, **kwargs)
  102. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 261, in close
  103. if not self.is_in_memory_db():
  104. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 380, in is_in_memory_db
  105. return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  106. File "/Users/dev_user/.pyenv/versions/3.8.3/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py", line 12, in is_in_memory_db
  107. return database_name == ':memory:' or 'mode=memory' in database_name
  108. TypeError: argument of type 'PosixPath' is not iterable

修正箇所は、「/mysite/settings.py」のDATABASES設定内。

'NAME': BASE_DIR / 'db.sqlite3',

'NAME': str( BASE_DIR / 'db.sqlite3' ),

os.pathの方を使えばこのエラーは起きなさそう。


参考サイト

Fixed #29983 -- Replaced os.path with pathlib.Path. #10684

https://github.com/django/django/pull/10684

How to use pathlib.Path in Django?

https://github.com/django/django/pull/10684

Django tutorial: `python manage.py startapp polls` fails

https://forum.djangoproject.com/t/django-tutorial-python-manage-py-startapp-polls-fails/2718

0 件のコメント:

コメントを投稿