【问题标题】:Django test ImportError: No module named 'taskbuster.unittests'Django 测试 ImportError:没有名为“taskbuster.unittests”的模块
【发布时间】:2015-12-07 18:31:06
【问题描述】:

我根据教程创建了一个项目,当我运行测试时,它似乎创建了测试数据库并运行脚本,但我收到错误

ImportError: No module named 'taskbuster.module_name'

我已经更改了 virtualenvwrapper postactivate 中的设置。只会让事情变得更糟,这意味着测试根本没有开始。 我已经更改了 base.py 设置文件中的路径,但这也只会让事情变得更糟。

├── db.sqlite3
├── functional_tests
│   ├── __init__.py
│   └── test_all_users.py
├── __init__.py
├── manage.py
├── taskbuster
│   ├── __init__.py
│   ├── settings
│   │   ├── base.py
│   │   ├── development.py
│   │   ├── __init__.py
│   │   ├── production.py
│   │   └── testing.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── unittests
    ├── admin.py
    ├── __init__.py
    ├── migrations
    │   ├── __init__.py
    │   └── __pycache__
    │       └── __init__.cpython-34.pyc
    ├── models.py
    ├── __pycache__
    │   ├── admin.cpython-34.pyc
    │   ├── __init__.cpython-34.pyc
    │   └── models.cpython-34.pyc
    ├── tests.py
    └── views.py

这是 settings/base.py 的 INSTALLED_APPS 内容

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

testing.py

# -*- coding: utf-8 -*-
from .base import *
DEBUG = True

wsgi.py

import os    
from django.core.wsgi import get_wsgi_application    
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "taskbuster.settings")    
application = get_wsgi_application()

manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "taskbuster.settings")    
    from django.core.management import execute_from_command_line    
    execute_from_command_line(sys.argv)

在 tb_test 中后激活

#!/bin/bash
# This hook is sourced after this virtualenv is activated.
export DJANGO_SETTINGS_MODULE="taskbuster.settings.testing"
export SECRET_KEY="" (Secretkey has a value in the actual code)

在 tb_test 中预停用

#!/bin/bash
# This hook is sourced before this virtualenv is deactivated.
unset DJANGO_SETTINGS_MODULE
unset SECRET_KEY

我已经激活了 tb_test

$ workon tb_test

然后我运行 python 测试

$python manage.py test

本教程实际上是在使用功能测试,但由于那不起作用,我创建了一个 Django 应用程序单元测试,所以这就是它们都在那里的原因。

我希望有人可以帮助解决这个问题。

提前致谢。

【问题讨论】:

    标签: python django testing tdd


    【解决方案1】:

    发生的情况是每个目录下的人不知道其他目录。导入无法在目录层次结构中查找。

    你可以做的是教 Python 在哪里寻找库

    export PYTHONPATH=$PYTHONPATH:/path/to/project
    

    不过,这是“低级”方式。应该有适当的设置来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 2021-01-28
      • 2020-09-07
      • 2018-02-05
      • 2015-07-20
      • 2018-07-28
      • 2023-03-27
      • 2015-08-20
      相关资源
      最近更新 更多