如何知道在哪个环境下运行Django中的单元测试

2024-05-23 19:53:47 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我想将prod设置与本地设置分开。我找到了这个库django-split-settings,它工作得很好。在

但是在我的代码中我有这样的东西:

if settings.DEBUG:

  # do debug stuff
else:
  # do prod stuff

问题是当我运行单元测试命令时:

^{pr2}$

上面的if语句将settings.DEBUG计算为false。这让我想知道,测试命令从哪个设置文件读取,以及如何更正它

我试过的

我试着运行这样的命令:

./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.

有什么想法吗?在


更新:

这就是我的run命令的样子

#!/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 \
  $@

目前我的管理.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 

然后进行测试_数据.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.

我不知道为什么会这样,因为我基准.py肯定有域名集。在


Tags: djangoinfrompyimportexecutebinsettings