【问题标题】:what are the differences between "python setup.py test" vs "pytest {package}"?“python setup.py test”与“pytest {package}”有什么区别?
【发布时间】:2020-03-18 16:25:36
【问题描述】:

我正在使用 GitHub 操作构建持续集成工作流。此工作流将用于运行单元测试和测试构建状态。该工作流程将被许多开发 python 包的不同人使用,因此我试图使其尽可能通用和模块化。我的目标是将运行单元测试和测试这些包的构建状态的任务分开,这引出了我的问题,命令python setup.py testpytest {package} 之间有什么区别?

具体来说,

  1. 使用命令pytest {package} 运行单元测试是否会自动构建您的包,或者如果不构建您的包就无法运行单元测试?

  2. 我知道 setup.py 是 setuptools 的构建脚本,我已经阅读了命令 python setup.py test 的作用,它说它将:就地构建后运行单元测试。那么这个命令是不是默认使用pytest呢?

我还在 setuptools 文档中看到了 build 命令,所以为了尝试回答我自己的问题,我会使用 pytest {package} 仅运行单元测试并使用 python setup.py build 测试包的构建状态。

正确吗?

非常感谢。

【问题讨论】:

    标签: python pytest setuptools github-actions


    【解决方案1】:

    是否使用命令 pytest {package} 运行单元测试 自动构建你的包?

    不,它不需要,你也不需要它——你不需要包来运行你的测试。

    不构建包就不能运行单元测试吗?

    有可能。

    我知道 setup.py 是 setuptools 的构建脚本,我有 阅读命令python setup.py test 做了什么,它说它会: 在就地构建后运行单元测试。那么这个命令是否使用 pytest 那么默认呢?

    它会运行配置的测试,因此这取决于您的设置。如前所述,不推荐运行python setup.py test,因此您通常不必担心这一点 - 直接在您的 CI 环境中使用pytest。请注意,尽管某些 Linux 发行版在部署时仍会默认运行此功能,因此如果您想分发您的软件包,您可能仍需要对其进行测试。

    要通过setup 运行pytest,您可能需要在setup.py 中使用类似的内容:

    setup(
        packages=find_packages(),
        tests_require=['pytest'],
    )
    

    【讨论】:

    • 注释,python setup.py test 已被弃用,pytest-runner
    • 谢谢,已删除 pytest-runner。已经提到弃用python setup.py test
    • 啊,好吧,我假设tests_require 仅供setup.py test 使用-- 没有阅读其余部分,抱歉!
    【解决方案2】:

    没有回答差异,但是...

    警告: test 已弃用,将在未来版本中删除。鼓励寻找独立于测试运行程序的通用测试入口点的用户使用tox

    -- setuptools documentation on the command "test - Build package and run a unittest suite"

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 2021-06-26
      • 2020-07-21
      • 1970-01-01
      • 2017-01-21
      • 2011-03-25
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多