我想用django-pytest来测试我的django脚本但py.test抱怨它找不到DJANGO_MODULE_SETTINGS。我已经按照django-pytest的文档设置了DJANGO_MODULE_SETTINGS。我没有从py.test获得预期的行为。
我想帮助解决此问题。 提前谢谢。
在新的shell中,未设置$ DJANGO_SETTINGS_MODULE。
我希望$ DJANGO_SETTINGS_MODULE为None。它 是
In: echo $DJANGO_SETTINGS_MODULE
Out:
.virtualenv/browsing/bin/postactivate
如django-pytest文档中所述,可以设置 $ DJANGO_SETTINGS_MODULE通过在postactivate中导出它 virutalenv的脚本。
export DJANGO_SETTINGS_MODULE=automated_browsing.settings
在终端cli:
正如预期的那样,定义了$ DJANGO_SETTING_MODULE。
# activate the virtualenv
In: workon browsing
In: echo $DJANGO_SETTINGS_MODULE
Out: automated_browsing.settings
正如预期的那样,设置模块的设置如服务器运行时所示:
# cd into django project
In: cd ../my_django/automated_browsing
# see if server runs
In: python manage.py runserver
Out: # output
Validating models...
0 errors found
September 02, 2014 - 10:45:35
Django version 1.6.6, using settings 'automated_browsing.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
In: ^C
如预期的那样,py.test无法找到它。
In: echo $DJANGO_SETTINGS_MODULE
Out: automated_browsing.settings
In: py.test tests/test_browser.py
Out: …
_pytest.config.UsageError: Could not import settings
'automated_browsing.settings'
(Is it on sys.path? Is there an import error in the settings file?)
No module named automated_browsing.settings
答案 0 :(得分:1)
今天遇到同样的问题。在项目/设置/中,您必须创建 init .py。像这样django识别文件夹。
在我的情况下,我只输入 __ inti __。py ,这是错误的。我更正了 inti .py - > init .py并且运行正常。
希望它有所帮助。 诉
答案 1 :(得分:0)
受到this answer的启发,我解决了我的问题。
根据django-pytest documentation for managing the python path:
默认情况下,pytest-django尝试通过查找Django项目 自动查找项目的manage.py文件并添加它 目录到Python路径。
我假设在包含py.test tests/test_browser.py
的django项目中执行manage.py
会处理PYTHONPATH。在我的情况下,这是一个不正确的假设。
我将以下内容添加到.virtualenv/$PROJECT/bin/postactivate
:
export PYTHONPATH=$PYTHONPATH:$HOME/development/my_python/my_django/automated_browsing
现在py.test按预期工作。