预提交与 TOX |有什么区别 |使用范围



Tox:https://tox.wiki/en/latest/

预提交:https://pre-commit.com/

我想了解这两种选择的边界。

我知道预提交会创建一个py环境,就像tox一样。对我来说,他们的架构看起来有点像。

有些人将它们组合使用。。。什么是预先承诺不能做的,那是毒物可以做的?我看到了在CI管道期间使用预提交可以运行单元测试等的例子。

哪一个最好集成在CI构建中?

简而言之,pre-commit是一个linter/formatter runner,tox是一个通用的虚拟环境管理和测试命令行工具。

虽然tox也可以运行linters,但管理linters的版本是很乏味的。在pre-commit中,您只需运行pre-commit autoupdate,所有linter都会得到更新。

另一方面,tox可以为许多不同的Python版本运行例如测试套件或覆盖率报告。这不仅对库有帮助,对应用程序也有帮助,因此您已经可以测试即将推出的Python版本了。

tox还用于创建文档,有时还用于发布——pre-commit不能(不应该(这样做。

tox当然不是过时的,尽管GitHub操作可以针对不同的Python版本进行测试,因为您可以在本地和CI.中运行tox

我就这个话题做了一次闪电式的演讲:https://www.youtube.com/watch?v=OnM3KuE7MQM

哪一个最好集成在CI构建中?

我喜欢通过tox在CI和本地运行pre-commit

毒物配置示例

https://github.com/jugmac00/flask-reuploaded/blob/6496f8427a06be4a9f6a5699757ca7f9aba78ef6/tox.ini#L24-L26

预提交配置示例

https://github.com/jugmac00/flask-reuploaded/blob/6496f8427a06be4a9f6a5699757ca7f9aba78ef6/.pre-commit-config.yaml

最新更新