![](/img/trans.png)
[英]Why can't Django via nginx find static files although manage.py findstatic is successful?
[英]Why can'y pytest-django find manage.py?
我有一个这样的项目结构:
setup.cfg
integration_tests/
|----tests.py
src/
|----manage.py
|----my_django_app/
还有一个 setup.cfg :
[tool:pytest]
addopts=--tb=short --strict -ra
DJANGO_SETTINGS_MODULE = my_django_app.settings
env =
APP_ENV=testing
USE_SQLITE_DB=True
但是当我导航到该目录结构的顶部并运行pytest
,我得到以下信息:
“pytest-django 找不到 Django 项目(找不到 manage.py 文件)。你必须明确地将你的 Django 项目添加到 Python 路径中才能被选中。”
如果我转而导航到/src/
并运行pytest
,则测试运行没有问题,但很明显,因为我在一个级别上没有运行任何集成测试。
根据文档,它似乎应该从您运行pytest
位置向下pytest
以尝试查找manage.py
: https : pytest
for-of-django-projects
如果不是这种情况,那么是否有某种方法可以在 setup.cfg 中配置设置以将src/
添加到 PYTHONPATH? 文档中使用 pip 以可编辑模式安装src/
的建议在我们的环境中并不能真正站得住脚。
您可以使用pytest-pythonpaths插件进行 pytests。
例子:
[pytest]
python_paths = your/path/apps your/path/libs
在您的具体情况下:
[tool:pytest]
addopts=--tb=short --strict -ra
DJANGO_SETTINGS_MODULE = my_django_app.settings
env =
APP_ENV=testing
USE_SQLITE_DB=True
python_paths = src
先来看看pytest是如何测试发现的。
Python 测试发现的约定
pytest 实现以下标准测试发现:
如果未指定参数,则集合从测试路径(如果已配置)或当前目录开始。 或者,命令行参数可用于目录、文件名或节点 ID 的任意组合。
递归到目录中,除非它们匹配 norecursedirs。 在这些目录中,搜索 test_*.py 或 *_test.py 文件,按其测试包名称导入。
从这些文件中,收集测试项: test 前缀测试函数或类之外的方法 test 前缀测试函数或方法 Test 前缀测试类内的方法(没有init方法)
因此, manage.py
不符合测试文件的条件,因此不会被自动发现,您需要在 python 路径中运行您的测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.