【发布时间】:2023-03-17 18:45:01
【问题描述】:
问题
我想将我的产品设置与本地设置分开。我找到了这个库django-split-settings,它运行良好。
但是在我的代码中的某个地方我有这样的东西:
if settings.DEBUG:
# do debug stuff
else:
# do prod stuff
问题是当我运行我的单元测试命令时:
./run ./manage.py test
上述 if 语句将 settings.DEBUG 评估为假。这让我想知道,哪个设置文件是读取的测试命令以及如何更正它
我尝试过的
我尝试运行这样的命令:
./run ./manage.py test --settings=bx/settings
给我这个崩溃:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/beneple/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/beneple/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 302, in execute
settings.INSTALLED_APPS
File "/beneple/venv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 55, in __getattr__
self._setup(name)
File "/beneple/venv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 43, in _setup
self._wrapped = Settings(settings_module)
File "/beneple/venv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 99, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: Import by filename is not supported.
有什么想法吗?
更新:
这就是我的运行命令的样子
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
docker run \
--env "PATH=/beneple/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
-e "DJANGO_SETTINGS_MODULE=bx.settings.local" \
--link beneple_db:db \
-v $DIR:/beneple \
-t -i --rm \
beneple/beneple \
$@
目前我的 manage.py 看起来像这样
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
如果我运行这个命令:
./run ./manage.py shell
它工作正常.. 但例如当我尝试运行时
./run ./flu.sh
依次运行 test_data.py,它的开头如下:
#!/usr/bin/env python
if __name__ == "__main__":
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import django
django.setup()
..
from django.conf import settings
from settings import DOMAIN
它给了我错误:
Traceback (most recent call last):
File "./bx/test_data.py", line 18, in <module>
from settings import DOMAIN
ImportError: cannot import name DOMAIN
Done.
我不确定为什么会这样,因为我的 base.py 肯定设置了 DOMAIN。
【问题讨论】:
-
什么是
./run?你能列出你的settings.py和manage.py吗? --settings 应该是 @Raja Simon 提到的模块路径
标签: python django unit-testing