如何使用Python自动测试更新的依赖项?

如何使用Python自动测试更新的依赖项?,python,pypi,python-packaging,Python,Pypi,Python Packaging,通常,python库依赖于多个其他依赖项,它使用类似foobar>=2.0.1 我正在寻找一种方法来检查较新版本的依赖项是否会引入不兼容,并最终确保这些信息的安全 如果他们破坏了某些东西,很容易通过添加类似的东西来禁止这些版本=2.0.2 更困难的是标记验证,比如注释它通过了版本测试的事实 请注意,我正在寻找一种方法来自动化这个过程。另外,请注意,将依赖项升级到通过测试的最新版本是不可接受的,因为它可能会引入依赖项死锁。我建议使用tox tox可以创建多个虚拟环境以使用不同的依赖项进行测试 假设

通常,python库依赖于多个其他依赖项,它使用类似
foobar>=2.0.1

我正在寻找一种方法来检查较新版本的依赖项是否会引入不兼容,并最终确保这些信息的安全

如果他们破坏了某些东西,很容易通过添加类似
的东西来禁止这些版本=2.0.2

更困难的是标记验证,比如注释它通过了版本测试的事实


请注意,我正在寻找一种方法来自动化这个过程。另外,请注意,将依赖项升级到通过测试的最新版本是不可接受的,因为它可能会引入依赖项死锁。

我建议使用
tox

tox可以创建多个虚拟环境以使用不同的依赖项进行测试

假设您想测试从1.0.0版到2.0.0版的依赖项
foobar

您可以使用tox定义10个不同的测试环境,只需运行tox即可触发10个不同的测试,这些测试在10个独立环境中使用
foobar 1.0
foobar 1.1
直到
foobar 2.0

请查看
tox

如果在10个独立的环境中运行10次测试套件需要花费太多时间,您可以尝试使用
detox
,它可以通过并行运行所有可能的活动来有效地使用多个CPU
detox
请参见

我不确定您将在哪里进行这种类型的测试,但在我的工作生涯中,我们的CI管道负责这一点,我们有一个管道负责依赖项更新。最终,如果发布新版本,将使用CI中的这些依赖项创建一个分支,并对其进行了测试。我们得到反馈并决定是否合并。这些更新会传播到将使用此依赖关系的所有项目,因此所有更新都“一次”完成。@idjaw测试的结果是什么?结果保存在哪里?您是否更新requirements.txt文件?寻找新版本和触发构建不是问题,到目前为止的问题是我不知道如何存储和维护这些信息。我们有几种不同的解决方案。最常用的(实际上,我们正在寻找替代品)是maven。最终,“proposalbot”将负责“检查”该依赖项的新标记/版本。运行的一系列测试实际上是应用程序的常规单元/集成测试,该应用程序可能继承此依赖项,以验证是否存在完整的功能。此proposalbot会按计划运行,因为它可能会很重。有时,如果我们确实需要尽快完成某项任务,我们会运行手动作业