使用诗歌运行 pytest 包

Mik*_*ike 35 python pytest python-poetry

我对诗歌很陌生,想用 pytest 来设置它。我在以下设置中有一个包 mylib

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dist\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mylib-0.0.1-py3-none-any.whl\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mylib-0.0.1.tar.gz\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 poetry.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mylib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_functions.py\n
Run Code Online (Sandbox Code Playgroud)\n

在 test_functions 我有

\n
import mylib\n
Run Code Online (Sandbox Code Playgroud)\n

然而,当我跑步时

\n
poetry run pytest\n
Run Code Online (Sandbox Code Playgroud)\n

它抱怨mylib没有被包括在内。我可以跑

\n
pip install dist/mylib-0.0.1-py3-none-any.whl\n
Run Code Online (Sandbox Code Playgroud)\n

但这会使我的 python 环境与 mylib 变得混乱。我也想将该环境用于其他包。

\n

我的问题是:使用诗歌和 pytest 的正确方法是什么?

\n

我的底层 python 环境是干净的 pyenv python 3.8。使用 pyproject.toml 我为 mylib 创建一个基于项目的虚拟环境。

\n

Arn*_*rne 23

您需要运行poetry install来设置您的开发环境。它将安装所有软件包和开发要求,一旦完成,它将对源代码进行开发安装。

您只需运行一次,代码更改将直接传播,不需要再次运行安装。


如果您已经设置了所需的虚拟环境,请注意在运行安装命令时它会被激活。如果不这样做,poetry将尝试创建一个新的虚拟环境并使用它,这可能不是您想要的。

  • 就我而言,“不包含任何元素”错误是由“pyproject.toml”的“[tool.poetry]”部分下的“packages”设置不正确引起的。例如,如果设置为 `packages = [{include = "src"}]` 则 `src/` 文件夹需要存在,否则会生成错误。 (4认同)

nev*_*ves 14

有一种运行 pytest 的特定方法:

poetry run pytest
Run Code Online (Sandbox Code Playgroud)

pytest我无法仅在激活虚拟环境的情况下运行它。当我跑步时什么也没有发生。

当我为可执行文件添加前缀时它才起作用poetry。

PS:不要忘记在文件中添加pytest作为开发依赖项pyproject.toml。


Wil*_*nch 8

仅供参考,您还需要在 pyproject.toml 中将 pytest 指定为开发依赖项。

如果没有,poetry run 将在您的家庭环境中找到 pytest 实例,但该实例找不到venv。我认为文档并没有说得很清楚。