tox 如何在其虚拟环境中安装我的诗歌项目?

How does tox install my poetry project on its virtual environment?

我在 pyenv 中使用 tox 和诗歌,我感到很困惑。

我正在使用 pyenv local 3.6.9 3.7.10 在我的 myproject 根文件夹中设置几个 python 版本。除此之外,我使用 poetry 来管理依赖项和 mypackage 构建。最后,我使用 tox 对几个 python 版本进行了自动测试。

我的问题是 tox 创建了一个位于 myproject/.tox 目录中的虚拟环境 - 比方说版本 3.6.9。为此,它会在该虚拟环境中安装 poetry 列出的所有依赖项,但也会安装 mypackage !!! (我查看了 .tox 文件夹。

问题:

  1. tox 通常使用 pip 安装软件包。然而,我在这里使用诗歌。那它怎么能安装我的包呢?是不是用诗造轮子,然后装上?

  2. 它会在修改时更新我的​​本地目录代码吗?我应该做一个 tox -r 吗?

  3. 我最近将我的测试文件夹配置移到了

project.toml
src
  +- mypackage
      +- __init__.py
      +- mypackage.py
tests
  +- test_mypackage.py

而且,我在修改mypackage的时候需要运行pytest。怎么做?

  1. link 和 skipsdist=True 是什么?

感谢您的帮助!

ad 1) tox 不造轮子,而是造sdist(源码分发)。如果你想造一个轮子,你需要安装https://github.com/ionelmc/tox-wheel

不过你的想法是对的。 poetry 构建 sdist,并在后台使用 pip 进行安装。

ad 2) tox 注意到源代码的更改,因此无需执行 tox -rtox 的文档缺少有关此主题的一些信息。同时,看看 https://github.com/tox-dev/tox/issues/2003#issuecomment-815832363.

ad 3) pytest 自己进行测试发现,因此它应该能够找到测试。在您的情况下,像 pytestpoetry run pytest 这样的命令就足够了。免责声明:我不使用 poetry,因此您可能需要更明确地说明路径。关于 tox 的官方 poetry 文档建议使用以下命令:poetry run pytest tests/,请参阅 https://python-poetry.org/docs/faq/#is-tox-supported

ad 4) 您可以在 https://tox.readthedocs.io/en/latest/config.html#conf-skipsdist 阅读更多关于 skipsdist=True 的信息 - 所以这告诉 tox 是否构建 sdist 或不。如果您不构建 sdist,您的测试将不会测试构建的包,而只会测试源代码(如果您将 pytest 指向它)。这可能不是您想要的 - 取决于您开发的是应用程序还是库,或者其他我不知道的情况。