【问题标题】:Is it correct to assume that my package is compatible with a version B, if it is compatible with versions A and C of Python/another packages?如果我的包与 Python/其他包的版本 A 和 C 兼容,假设我的包与版本 B 兼容是否正确?
【发布时间】:2021-11-07 17:27:39
【问题描述】:

我刚刚创建了自己的包,并希望在 GitHub 和 PyPi 上发布它。

我目前正在使用the tox library 检查包的依赖关系。例如,我的包使用the Pandas library

包测试在 Pandas 1.1.4 和 Pandas 1.3.4 上通过。 假设测试也将在 1.1.4 和 1.3.4 之间的每个 Pandas 版本上通过是否正确?

与 Python 版本相同的问题。 如果包测试在 Python 3.8.2 和 Python 3.10.0 上通过,假设这两者之间的每个 Python 版本都与我的代码兼容是否正确?

如果假设不正确,有没有办法使用 tox 库自动执行该过程?

以防万一,我将列出其他包依赖项:

  • matplotlib
  • beautifulsoup4
  • 请求
  • numpy

【问题讨论】:

    标签: python testing tox


    【解决方案1】:

    不幸的是,您不能假设您的包适用于 Python 或 e.g.您未测试的 Pandas 版本。

    这意味着,如果您真的想确保您的包适用于所有组合,则需要对其进行测试。

    tox 是一个很好的工具。

    您需要在tox 中使用factors

    尤其是 Django 社区经常使用这个功能,例如:

    https://github.com/jazzband/django-auditlog/blob/3dee9f1555239ae9c4a50afeaa487547247d2d96/tox.ini

    这里是tox文档中相关部分的链接:

    https://tox.wiki/en/latest/config.html?highlight=factors#factors-and-factor-conditional-settings

    为了在 GitHub 上测试这个矩阵,我推荐使用这个tox 插件

    https://github.com/ymyzk/tox-gh-actions

    免责声明:我是tox 维护者之一。

    【讨论】:

    • 谢谢你的详细回答,我现在明白我应该做什么了。我还有一个问题:我应该只测试 Python 的次要版本还是应该测试每个错误修复版本?例如,如果我想检查我的代码是否与 Python 3.8 兼容,那么我应该测试 Python 3.8.1、3.8.2 等吗?这将是一个非常耗时的方法,所以也许我应该只选择一个 3.8 版本并测试它的所有内容(例如 Python 3.8.12 - 最新的错误修复)?对于其他包(熊猫等),我假设我应该测试每个错误修复版本。如果我错了,请纠正我。
    • 您需要什么级别的确定性?点发布不应该包含重大更改(对于遵循 semver 的项目),但也不是不可能。当一个单点版本中出现意外的重大更改时,它可以在后续的单点版本中修复。我会看看有多少时间/金钱/声誉依赖于正确的答案,并用它来指导你的测试矩阵的构建。
    • 另外,没有什么可以告诉您的用户您测试了 X.Y.0 和 X.Y.3 并让他们得出关于 X.Y.1 和 X.Y.2 的自己的结论。
    猜你喜欢
    • 2015-04-30
    • 2016-08-23
    • 2021-03-24
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2016-01-02
    相关资源
    最近更新 更多