当前位置: 首页 > 面试题库 >

运行Django教程测试失败-没有名为polls.tests的模块

高兴贤
2023-03-14
问题内容

我正在玩django 1.6教程,但无法运行测试。我的项目(名称为mydjango)和应用程序结构(名称为民意调查)如下所示在virtualenv中。(.nja文件仅由ninja-ide我正在使用的ide创建)

.
├── __init__.py
├── manage.py
├── mydjango
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── mydjango.nja
│   ├── settings.py
│   ├── settings.pyc
│   ├── templates
│   │   └── admin
│   │       └── base_site.html
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── polls
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   ├── __init__.py
│   │   └── polls
│   │       ├── detail.html
│   │       ├── index.html
│   │       ├── __init__.py
│   │       └── results.html
│   ├── tests.py
│   ├── tests.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── views.py
│   └── views.pyc
└── polls.nja

我按照教程学习了django的工作原理,但是我陷于测试部分。如本教程所建议,我在app文件夹中创建了一个名为tests.py的文件,非常简单的文件是:

# -*- coding: utf-8 -*-
from django.test import TestCase
import datetime
from django.utils import timezone
from polls.models import Question

# Create your tests here.l  
class QuestionMethodTests(TestCase):

    def test_was_published_recently_with_future_poll(self):
        """
        was_published_recently dovrebbe ritornare falso se si mette una data nel futuro
        """
        future_question = Question(pub_date=timezone.now() + datetime.timedelta(hours=50))
        self.assertEqual(future_question.was_published_recently(), False)

然后我将unittest2安装到virtualenv中

$pip install unittest2

并运行

$python manage.py test polls
Creating test database for alias 'default'...
E
======================================================================
ERROR: mydjango.polls.tests (unittest2.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: mydjango.polls.tests
Traceback (most recent call last):
  File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 260, in _find_tests
    module = self._get_module_from_name(name)
  File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 238, in _get_module_from_name
    __import__(name)
ImportError: No module named polls.tests


----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)
Destroying test database for alias 'default'...

无法进行测试,如果没有通过应用名称,它也会返回相同的错误:

$ python manage.py test
Creating test database for alias 'default'...
E
======================================================================
ERROR: mydjango.polls.tests (unittest2.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: mydjango.polls.tests
Traceback (most recent call last):
  File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 260, in _find_tests
    module = self._get_module_from_name(name)
  File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 238, in _get_module_from_name
    __import__(name)
ImportError: No module named polls.tests


----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)
Destroying test database for alias 'default'...

我的INSTALLED_APPS是:

INSTALLED_APPS = (
    'south',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
)

我究竟做错了什么?


问题答案:

我的Django项目遇到了完全相同的问题:

$ python manage test polls.tests

工作正常,但以下操作因导入错误而失败:

$ python manage test polls
$ python manage test
(...)
ImportError: Failed to import test module: mydjango.polls.tests
Traceback (most recent call last):
(...)
ImportError: No module named polls.tests

仔细检查错误消息:Django的测试运行程序尝试从mydjango.polls.tests导入测试,其中mydjango是根目录(项目的容器)的名称。

我通过删除mydjango目录(与manage.py文件处于同一级别)中的__init__.py文件来解决此问题。这个目录不应该是python模块,如果是这样的话,它似乎与Django的测试运行程序混淆了。

因此,仅删除_ init _.py文件应该可以解决我们的问题:

$ rm mydjango/__init__.py


 类似资料:
  • 问题内容: 运行它时,出现以下错误: 这是我的模型: 问题答案: 第一个问题是回溯中的以下警告: 这意味着你’polls.apps.PollsConfig在INSTALLED_APPS设置后缺少逗号。它应该是: 第二个问题是警告。这表明你已经安装了Django 1.8,但是你正在遵循Django 1.9教程。 如果你使用的是Django 1.8,请按照1.8教程进行操作,以免遇到此类问题。Djan

  • 问题内容: 尝试从命令行运行Django时出现以下错误。 关于如何解决这个问题的任何想法? 问题答案: 听起来你没有安装django。你应该检查此命令生成的目录: 看那里是否有django软件包。 如果站点软件包内没有django文件夹,则说明你没有安装django(至少对于该版本的python)。 可能你安装了多个版本的python,而django位于另一版本中。如果键入python然后按TAB

  • 我在我的电脑上做一个Django项目,然后我创建了一个名为“register”的应用程序,当我试图运行manage时,我遇到了一个奇怪的错误。py runserver:im使用Python 3.8.3。当我添加表单进行注册时,会发生此错误。 我的设置。py:

  • 我正在使用SeleniumWebDriver(2.53.0版)的Java实现对web应用程序运行一些自动化测试。测试使用Cucumber的Java实现(版本1.2.3)以行为驱动测试格式编写。我使用Maven(3.3.9版)导入我的所有依赖项,并构建和运行测试。使用cucumber标签将测试分为不同类别。例如,我可以使用以下命令从命令行运行一类标有@JohnnyBravo的测试: 在做了一些研究后

  • 我正在尝试在Windows 8 Professional(64位)笔记本电脑上安装TestCular(使用nmp),但在尝试安装socket.io(作为此过程的一部分)时失败。我得到的错误是 我显然有。NET框架3.5安装(它在控制面板中的添加/删除Windows组件位下检查),尽管我没有设法找到vcbuild.exe.我尝试安装VS2005的旧副本,但这导致了一个关于无效项目的不同错误(. vc

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1