如何使用全局参数跳过 python 单元测试
How to skip python unittest with a global parameter
我在 python 中有一组单元测试。其中一些使用 pyqt 打开图形对象,一些只是标准的独立测试。我的目标是自动 运行 至少不需要打开的测试 window,因为除非它会等待用户输入然后失败。
注意:
- 我无法删除图形测试(来自项目的约束)
- 默认情况下所有测试都应该运行,但仅传递一些非图形参数将运行
- 我的测试套件是使用 unittest.TestLoader().discover
构建的
我最好的猜测是将一个全局参数传递给 TestSuite,以便每个测试都可以检查该值以了解它是否应该跳过。但是在阅读了 unittest 文档后,我找不到这样做的方法。
我知道这个问题:How To Send Arguments to a UnitTest Without Global Variables,但我希望有一些单元测试配置。
您可以使用 unittest.skipIf(condition, reason)
和环境变量来跳过图形测试。
像这样创建一个装饰器:
graphical_test = unittest.skipIf(
os.environ.get('GRAPHICAL_TESTS', False), 'Non graphical tests only'
)
然后在设置 GRAPHICAL_TESTS=1
后用 @graphical_test
和 运行 注释你的图形测试
我在 python 中有一组单元测试。其中一些使用 pyqt 打开图形对象,一些只是标准的独立测试。我的目标是自动 运行 至少不需要打开的测试 window,因为除非它会等待用户输入然后失败。
注意:
- 我无法删除图形测试(来自项目的约束)
- 默认情况下所有测试都应该运行,但仅传递一些非图形参数将运行
- 我的测试套件是使用 unittest.TestLoader().discover 构建的
我最好的猜测是将一个全局参数传递给 TestSuite,以便每个测试都可以检查该值以了解它是否应该跳过。但是在阅读了 unittest 文档后,我找不到这样做的方法。
我知道这个问题:How To Send Arguments to a UnitTest Without Global Variables,但我希望有一些单元测试配置。
您可以使用 unittest.skipIf(condition, reason)
和环境变量来跳过图形测试。
像这样创建一个装饰器:
graphical_test = unittest.skipIf(
os.environ.get('GRAPHICAL_TESTS', False), 'Non graphical tests only'
)
然后在设置 GRAPHICAL_TESTS=1
@graphical_test
和 运行 注释你的图形测试