【问题标题】:pytest-django could not find a Django projectpytest-django 找不到 Django 项目
【发布时间】:2018-10-26 11:23:19
【问题描述】:

尝试用 django 配置 pytest,该项目已经有很多不是用 pytest 编写的测试(用 unittest 编写),但我试图让它们用 pytest 运行,这样我就可以编写 pytest 测试并让它与旧测试一起工作.

我知道 pytest-django 在 django 项目的根目录中检查 manage.py 文件,但是这个项目的 manage.py 文件不在根目录中,所以我猜这就是我运行时抛出以下错误的原因pytest 但是运行 pytest 并提供特定文件是可行的。如何指定 manage.py 在哪里?因为我在documentation 中找不到这个

pytest-django could not find a Django project (no manage.py file could be found). 
You must explicitly add your Django project to the Python path to have it picked up.

【问题讨论】:

  • 我不知道如何解决您的问题,但我认为文档会有所帮助 docs.djangoproject.com/en/2.0/topics/testing/overview
  • 除非你的 manage.py 中有一些特定于项目的代码,否则指定正确的 django 设置模块就足够了(通过DJANGO_SETTINGS_MODULE env var,或通过--ds arg,或在pytest.ini)。此外,您必须确保在sys.path 中找到所有项目源,仅此而已。
  • 如果您的manage.py 中有一些特定于测试的代码(这不仅仅是调整设置的垫片)并且您通过python manage.py test 运行测试,然后通过read this。跨度>
  • 你可以显式地展示你到pytest的路径:pytest-django.readthedocs.io/en/latest/… 或许你也可以这样想:pypi.org/project/pytest-pythonpath

标签: python django pytest pytest-django


【解决方案1】:

您可以定义要运行的 python 命令的 python 路径:

PYTHONPATH=/your/path/to/your/django/project/ pytest

或者在运行 pytest 命令之前导出你的 pythonpath:

export PYTHONPATH=/your/path/to/your/django/project/

pytest

【讨论】:

  • 是的,如果我们想从任何目录运行,这将有效......但后来我发现我必须 cd 进入包含 manage.py 的目录并运行它同样有效的命令
【解决方案2】:

作为标准做法,您应该将setup.cfg 文件添加到您的根目录,并带有以下块 -

[tool:pytest]
DJANGO_SETTINGS_MODULE=<package_name>.settings.py

您可以稍后通过为它们添加特定的块来为 linter 使用相同的文件。

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 2013-11-20
    • 2014-05-13
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多