python - 如何使用全局参数跳过 python unittest

标签 python pyqt python-unittest

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

注意:

  • 我无法删除图形测试(来自项目的约束)
  • 默认情况下所有测试都应该运行,但是传递一些参数只有非图形测试才会运行
  • 我的测试套件是使用 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_test 注释您的图形测试,并在设置 GRAPHICAL_TESTS=1 后运行您的测试

关于python - 如何使用全局参数跳过 python unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698209/

相关文章:

python - 测试顺序在 python 2 上完美,但在 python 3 上则不然

python - sendLine 中的扭曲类型错误

python - 如何在seaborn中插入点

qt - PyQt 更新 QLabel

python - 将 PyQt3D 窗口集成到 QMainWindow

python - 当状态更改为媒体结束时 QMediaPlayer 状态未停止

python - 数据库中缺少字段但存在于 Django 模型中

Python + Pandas + 数据框 : couldn't append one dataframe to another

python - 无法在Python中使用unittest模拟类方法

Python-ModuleNotFoundError : No module named 'x'