【问题标题】:How to skip python unittest with a global parameter如何使用全局参数跳过 python unittest
【发布时间】:2015-11-13 17:10:29
【问题描述】:

我在 python 中有一组单元测试。其中一些使用 pyqt 打开图形对象,一些只是标准的独立测试。我的目标是至少自动运行不需要打开窗口的测试,因为除非它会等待用户输入然后失败。

请注意:

  • 我无法删除图形测试(项目的约束)
  • 默认情况下所有测试都应该运行,但是传递一些参数只有非图形的会运行
  • 我的测试套件是使用 unittest.TestLoader().discover 构建的

我最好的猜测是将全局参数传递给 TestSuite,以便每个测试都可以检查该值以了解它是否应该跳过。但是在阅读了 unittest 文档后,我找不到这样做的方法。

我知道这个问题:How To Send Arguments to a UnitTest Without Global Variables,但我希望有一些单元测试配置。

【问题讨论】:

    标签: python pyqt python-unittest


    【解决方案1】:

    您可以使用unittest.skipIf(condition, reason) 和环境变量来跳过图形测试。

    创建一个装饰器,如:

    graphical_test = unittest.skipIf(
        os.environ.get('GRAPHICAL_TESTS', False), 'Non graphical tests only'
    )
    

    然后使用@graphical_test 注释您的图形测试并在设置GRAPHICAL_TESTS=1 后运行您的测试

    【讨论】:

    • 好吧,我不太喜欢使用 env vars 来做这种用途,但似乎确实没有标准的方法来使用单元测试来做到这一点。谢谢
    • 不需要环境变量,理论上可以使用TrueFalse等任何变量来加速本地测试。
    猜你喜欢
    • 2014-01-04
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2012-07-07
    • 2020-12-07
    • 2020-06-20
    相关资源
    最近更新 更多