代码之家  ›  专栏  ›  技术社区  ›  dmmfll

DJANGO_SETTINGS_MODULE已定义,项目设置通过“python manage.py”导入,但DJANGO-pytest未找到DJANGO设置

  •  1
  • dmmfll  · 技术社区  · 12 年前

    问题概要:

    我想使用django-pytest来测试我的django脚本,但py.test抱怨它找不到django_MODULE_SETTINGS。我遵循了django-pytest的文档来设置django_MODULE_SETTINGS。我没有从py.test得到预期的行为。

    我希望帮助解决此问题。 提前谢谢。

    工具书类 django-pytest documentation

    在virtualevn postactivate脚本中设置DJANGO_SETTINGS_MODULE:

    1. 在新shell中,未设置$DJANGO_SETTINGS_MODULE。

      我希望$DJANGO_SETTINGS_MODULE为None。它 是

         In: echo $DJANGO_SETTINGS_MODULE
         Out:
      
    2. 的内容 .virtualenv/browsing/bin/postactivate

      如django-pytest文档中所述,可以设置 $DJANGO_SETTINGS_MODULE,方法是在postactivate中导出 virutalenv的脚本。

      export DJANGO_SETTINGS_MODULE=automated_browsing.settings
      
    3. 在终端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
      

    已安装的软件包

    1. Django==1.6.6
    2. EasyProcess==0.1.6
    3. PyVirtualDisplay==0.1.5
    4. 南部==1.0
    5. argparse==1.2.1
    6. ipython==2.2.0
    7. lxml==3.3.6
    8. psycopg2==2.5.4
    9. py==1.4.23
    10. pytest django==2.6.2
    11. pytest==2.6.1
    12. 硒==2.42.1
    13. 测试pkg==0.0
    14. wsgiref==0.1.2
    2 回复  |  直到 12 年前
        1
  •  1
  •   Community Mohan Dere    7 年前

    今天也有同样的问题。在项目/设置/中,您必须创建 初始化 .py.像这个django一样识别文件夹。

    在我的情况下,我只是打字 __初始版本 这是错误的。我纠正了 英提 .py--> 初始化 .py,工作正常。

    希望有帮助。 五、

        2
  •  0
  •   Community Mohan Dere    9 年前

    灵感来自 this answer ,我已经解决了我的问题。

    根据 django-pytest documentation for managing the python path :

    默认情况下,pytestdjango尝试通过以下方式查找django项目 自动查找项目manage.py文件并添加其 目录转换为Python路径。

    我假设执行 py.test tests/test_browser.py django项目内部,包含 manage.py 将处理巨蟒。在我的情况下,这是一个错误的假设。

    我将以下内容添加到 .virtualenv/$PROJECT/bin/postactivate :

    export PYTHONPATH=$PYTHONPATH:$HOME/development/my_python/my_django/automated_browsing
    

    现在py.test按预期工作。