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\nRun Code Online (Sandbox Code Playgroud)\n在 test_functions 我有
\nimport mylib\nRun Code Online (Sandbox Code Playgroud)\n然而,当我跑步时
\npoetry run pytest\nRun Code Online (Sandbox Code Playgroud)\n它抱怨mylib没有被包括在内。我可以跑
pip install dist/mylib-0.0.1-py3-none-any.whl\nRun Code Online (Sandbox Code Playgroud)\n但这会使我的 python 环境与 mylib 变得混乱。我也想将该环境用于其他包。
\n我的问题是:使用诗歌和 pytest 的正确方法是什么?
\n我的底层 python 环境是干净的 pyenv python 3.8。使用 pyproject.toml 我为 mylib 创建一个基于项目的虚拟环境。
\nArn*_*rne 23
您需要运行poetry install来设置您的开发环境。它将安装所有软件包和开发要求,一旦完成,它将对源代码进行开发安装。
您只需运行一次,代码更改将直接传播,不需要再次运行安装。
如果您已经设置了所需的虚拟环境,请注意在运行安装命令时它会被激活。如果不这样做,poetry将尝试创建一个新的虚拟环境并使用它,这可能不是您想要的。
nev*_*ves 14
有一种运行 pytest 的特定方法:
poetry run pytest
Run Code Online (Sandbox Code Playgroud)
pytest我无法仅在激活虚拟环境的情况下运行它。当我跑步时什么也没有发生。
当我为可执行文件添加前缀时它才起作用poetry。
PS:不要忘记在文件中添加pytest作为开发依赖项pyproject.toml。
仅供参考,您还需要在 pyproject.toml 中将 pytest 指定为开发依赖项。
如果没有,poetry run 将在您的家庭环境中找到 pytest 实例,但该实例找不到venv。我认为文档并没有说得很清楚。