gpt4 book ai didi

python - 使用 "src"布局在 Python 项目中使用 PyTest

转载 作者:行者123 更新时间:2023-11-28 20:33:59 29 4
gpt4 key购买 nike

我正在使用 src 目录尝试推荐的 python 包布局之一。

enter image description here

我的问题是当我从命令行运行 pytest 时,我的测试没有找到我的 python 包。我尝试从该目录的顶层和测试目录中运行,但仍然出现 ModuleNotFoundError 异常。我正在使用 pytest-3.5.0 运行 python 3.5。

从这种类型的 python 包布局中执行 pytest 的推荐方法是什么?

最佳答案

如果您使用 py.test 运行测试,它不会找到该应用程序,因为您一定没有安装它。您可以使用 python -m pytest 来运行您的测试,因为 python 会自动将您当前的工作目录添加到您的 PATH。

因此,如果您在 src 目录中使用 python -m pytest .. 将起作用

我通常使用的结构是:

root
├── packagename
│   ├── __init__.py
│   └── ...
└── tests
   └── ...

这样,当我在根目录中简单地运行 python -m pytest 时,它工作正常。阅读更多信息:https://stackoverflow.com/a/34140498/1755083

第二个选项,如果你仍然想用 py.test 运行它,你可以使用:

PYTHONPATH=src/ py.test

然后从根目录运行它。这只是将 src 文件夹添加到您的 PYTHONPATH,现在您的测试将知道在哪里可以找到 packagename 包。

第三个选项是使用带有 -e 的 pip 以可编辑模式安装您的包。这将创建一个指向 packagename 文件夹的链接并使用 pip 安装它 - 因此在 packagename 中所做的任何修改都会立即反射(reflect)在 pip 的安装中(因为它是一个链接)。这样做的问题是,如果您移动存储库,则需要重新安装,如果您有超过 1 个克隆/软件包,则需要跟踪安装了哪个。

关于python - 使用 "src"布局在 Python 项目中使用 PyTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49589082/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com