首页 > 编程问答 >Pytest 找不到我的设置目录

Pytest 找不到我的设置目录

时间:2024-08-02 16:05:02浏览次数:13  
标签:python pytest pytest-django

我尝试启动 pytest,但 pytest 找不到设置文件

我在 virtualenv 中 Python 3.11.9 pytest 8.3.2

ImportError: No module named 'drf.settings'
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.

这里是我的项目的结构

├── README.md
├── drf
│   ├── drf
│   │   ├── __init__.py
│   │   ├── production_settings.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── manage.py
│   └── tests
│       ├── __pycache__
│       │   └── test_auth.cpython-311-pytest-8.3.2.pyc
│       ├── factory_boy
│       │   ├── __pycache__
│       │   │   └── factory_models.cpython-311.pyc
│       │   └── factory_models.py
│       └── test_auth.py
├── drf-uwsgi.ini
├── pytest.ini
├── requirements.in
├── requirements.txt

这里是 pytest.ini 的内容

[pytest]
DJANGO_SETTINGS_MODULE = drf.settings.py
python_files = test_*.py

到目前为止我尝试过的:

  • 我尝试将 init .py添加到测试目录(似乎不推荐并且没有工作)
  • 停用并重新激活virtualenv
  • 更改drf .settings.py 用于 drf.drf.settings 但什么都没有
  • 使用 python -m pytest 测试将 pytest 作为模块运行

编辑:

  • 如果我 cd drf 并且尝试过,我会得到一个里尔不同的错误
ImportError: No module named 'drf.settings.py'; 'drf.settings' is not a package

pytest-django found a Django project in . (it contains manage.py) and added it to the Python path.
If this is wrong, add "django_find_project = false" to pytest.ini and explicitly manage your Python path.

如果你有什么建议;)


你的问题有两个部分:

  1. pytest 无法找到你的 Django 设置。
  2. pytest 无法导入你的设置模块。

让我们分别解决这两个问题。

1. 配置 pytest-django 查找你的 Django 项目

pytest-django 提供了一种自动查找你的 Django 项目的机制,但它依赖于在项目根目录中找到 manage.py 文件。在你的例子中, manage.py 文件位于 drf/ 子目录中。你有两个选择来解决这个问题:

选项 1:从项目根目录运行 pytest,并指定 Django 设置模块:

  • 确保你的 pytest.ini 文件内容如下:
[pytest]
DJANGO_SETTINGS_MODULE = drf.drf.settings

注意:我们这里使用 drf.drf.settings ,因为你的设置文件位于 drf/drf/settings.py

  • 从你的项目根目录运行以下命令:
pytest

这将告诉 pytest-django 使用指定的设置模块,即使它没有自动检测到 Django 项目。

选项 2:从 drf/ 目录运行 pytest:

  • drf/ 目录运行 pytest 命令:
cd drf
pytest
  • 由于 manage.py 文件位于当前目录中, pytest-django 应该能够自动检测到你的 Django 项目。但是,你可能仍需要确保你的 pytest.ini 文件包含正确的 DJANGO_SETTINGS_MODULE 设置。

2. 解决 ImportError

ImportError: No module named 'drf.settings.py' 表明 Python 无法找到你的设置模块。这可能是由于你的 Python 路径配置问题造成的。

尝试以下步骤来解决这个问题:

  • 确保你的虚拟环境处于活动状态。

  • 如果你使用的是选项 1(从项目根目录运行 pytest),请尝试将 drf 目录添加到你的 PYTHONPATH 环境变量中:

export PYTHONPATH=$PYTHONPATH:$(pwd)/drf
pytest

这将确保 Python 解释器可以在 drf 目录中搜索模块。

  • 作为一种好的做法,请考虑在你的 drf/drf/__init__.py 文件中添加以下行:
default_app_config = 'drf.drf.apps.DrfConfig'

这将明确告诉 Django 如何加载你的应用程序配置。

完成这些步骤后, pytest 应该能够找到并导入你的 Django 设置,并且你应该能够运行你的测试了.

标签:python,pytest,pytest-django
From: 78824119

相关文章

  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......
  • Python 警告:重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))
    我正在尝试pipinstall--upgradepip并保持收到此错误:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',NewConnectionError('<......
  • {Python} 有没有办法从函数中“提取”返回值变量并在其他地方使用它,而不调用原始函数?
    第一次在这里发帖。对python来说相对较新,我正在开发一个程序,它基本上是一个随机故事生成器,用于学习语言、发展技能并添加到我的投资组合中。我有一个主文件(最初启动该程序)、一个简介文件(对于介绍部分,获取用户名以及我试图“提取”user_name变量的位置),一个函数文件,其中包......
  • 为什么我在 Python 中的 Skip-Gram 实现会产生不正确的结果?
    我正在使用Python实现Word2Vec的Skip-Gram模型。然而,正如生成的嵌入及其可视化所示,我的模型似乎无法正常工作。这是嵌入的3D图的示例,它显示单词聚集在一起并重叠,因此很难区分它们:我怀疑问题在于我的实现而不是绘图函数。importnumpyasnpfromnltk.corpusimpor......
  • 基于SpringBoot的智能购房推荐系统-09040(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    Springboot智能购房推荐系统摘 要近年来随着我国经济的高速发展,房地产业也随之蓬勃发展,尤其是最近国家新出台的房改政策。鼓励居民购房,这对房产公司无疑是一个极好的发展势头。尤为重要的是,近几年随着信息技术和电子商务的快速发展,许多企业都开发了自己房产信息软件。智......
  • Python 基础教学 - 开发规范
    Python基础教学-开发规范一、引言在Python编程中,遵循良好的开发规范是编写高质量、可维护代码的关键。本文将为您详细介绍Python开发中的一些重要规范,帮助您养成良好的编程习惯。二、代码布局缩进使用4个空格进行缩进,避免使用制表符。示例:ifTrue:p......
  • Python基础学习笔记(一)
    文章目录一、下载Python二、变量三、数据类型四、运算符五、语句六、容器类型七、函数function八、常用API九、面向对象类的创建:创建对象:实例成员:实例方法:类成员:静态方法:十、三大特征:封装、继承、多态十一、六大原则:Python基础学习笔记(二)一、下载Python官网:https......
  • 随机森林的可解释性分析(含python代码)
    随机森林的可解释性分析1.引言可解释性的重要性2.随机森林的原理2.1基本原理:2.2随机森林的实现3.随机森林的可解释性分析3.1特征重要性3.2特征重要性3.3SHAP值3.4部分依赖图(PDP)3.5交互特征效应3.6变量依赖图4.结论5.参考文献1.引言在机器学习领域,随机森林......
  • 【Python】模块
    1.模块的概念Python中有一种方法可以把定义放在一个文件里面,并在脚本或者解释器的交互实例中使用它们。这样的文件被称作Python的模块。2.自定义模块在Python中,自定义模块有两个作用,一个作用是规范代码,让代码更容易阅读;另一个作用是方便其他程序使用已经编写好的代码,提高开......
  • 计算机毕业设计-基于python的房屋租赁系统【源码+文档+PPT】
    精彩专栏推荐订阅:在下方主页......