问题描述
我有一个 python 包,我使用 poetry
进行依赖管理和打包。
在我的本地环境中,我使用 tox
在多个 python 版本中测试包。
如何在每次有推送或拉取请求时使用 GitHub 操作来测试我的包?
我尝试过的事情:
-
https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml
(此官方操作通过
pip
和requirements.txt
安装,但我使用的是诗歌) -
https://github.com/abatilo/actions-poetry
(这个动作,可以安装诗,但使用
pip
,诗不推荐,因为它会导致我的应用程序依赖冲突,见issue) -
https://github.com/ymyzk/tox-gh-actions(我应该使用这个吗?为什么不在每个矩阵(github 动作)中运行
pytest
,这个动作似乎违背了 tox 的目的)
我想在 gh-actions 中测试我的 python 代码。
在我的情况下,我应该实际使用什么?
最佳实践是什么?和最优化的工具
解决方法
tox
的美妙之处在于您可以在本地和 CI 上运行它。
当它在本地通过时,CI 成功的可能性很高,而且您只需在一个文件中定义一次测试要求和测试设置。
为此,我建议使用提到的 tox-gh-actions
。
我成功地将此模式应用于数十个存储库。
我推荐以下博客文章,它很好地介绍了此设置:
https://hynek.me/articles/python-github-actions/
您可以查看 tox.ini 和 gh action config file,例如Flask-Reuploaded。
至于您关于在每个矩阵中运行 pytest 的问题...这里的缺点是您需要自己处理测试设置,并且必须在两个地方定义所有内容,tox.ini
用于本地测试并在 yaml 配置中用于 gh 操作。