【问题标题】:ModuleNotFoundError: No module named 'mysite.polls' in django tutorial while testingModuleNotFoundError:测试时在 django 教程中没有名为“mysite.polls”的模块
【发布时间】:2020-10-17 19:53:00
【问题描述】:

我正在编写来自 django 文档站点的教程:https://docs.djangoproject.com/en/3.1/intro/tutorial05/

我遇到了以下问题: 尝试在我的应用程序上运行测试时(在 Pycharm 命令行中使用:py manage.py test polls) 我收到以下错误:

> ImportError: Failed to import test module: mysite.polls Traceback
> (most recent call last):   File
> "C:\Users\micha\Anaconda3\envs\DjangoTutorial\lib\unittest\loader.py",
> line 470, in _find_test_path
>     package = self._get_module_from_name(name)   File "C:\Users\micha\Anaconda3\envs\DjangoTutorial\lib\unittest\loader.py",
> line 377, in _get_module_from_name
>     __import__(name) ModuleNotFoundError: No module named 'mysite.polls'

我的项目的文件结构如下:link to the directory tree img

看起来测试单元自动在 'polls' 前面添加了 'mysite'

我尝试了什么: 我试图在 django 测试文档中查找答案。 我能找到的唯一解决方案是将命令更改为这样:

py manage.py test polls.tests

然后它正确地运行我的测试。

据我了解 django 文档,django 应该会自动在 polls 中找到每个 'test*' 文件,但如果我找不到 'polls' 模块。

你能告诉我为什么会这样吗?

【问题讨论】:

    标签: python django testing


    【解决方案1】:

    您是否在设置文件中包含了您的投票应用程序?

    INSTALLED_APPS?

    【讨论】:

    • 是的,我做了如下:INSTALLED_APPS = [ #'polls', 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',]
    【解决方案2】:

    来自 django 文档:“测试发现基于 unittest 模块的内置测试发现。默认情况下,这将发现当前工作目录下名为“test*.py”的任何文件中的测试。”

    它表示当前工作目录,即。在 manage.py 所在的位置,您的测试位于 polls 文件夹中,这就是需要 polls.test 的原因。

    您还可以提供目录路径以发现该目录下的测试:./manage.py test polls/

    【讨论】:

    • 所以当我从 /polls 目录工作时,命令:'py ../manage.py test polls' 确实有效(所以使用双 ..)但是从 /mysite 目录工作,命令: 'py manage.py test /polls' 给出了一个旧错误。并且 /polls 在当前工作目录 (/mysite) 下,所以它应该可以工作。不应该吗?
    猜你喜欢
    • 2014-01-30
    • 2019-03-08
    • 2021-08-06
    • 2018-05-09
    • 1970-01-01
    • 2019-11-28
    • 2018-11-03
    • 2019-01-10
    相关资源
    最近更新 更多