class QAbstractItemModelTester#

QAbstractItemModelTester 类帮助测试 QAbstractItemModel 子类。 更多

Inheritance diagram of PySide6.QtTest.QAbstractItemModelTester

摘要#

方法#

  • def __init__()

  • def failureReportingMode()

  • def model()

  • def setUseFetchMore()

注意

本文档可能包含自动从 C++ 转换到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式告诉我们。

详细描述#

QAbstractItemModelTester 类是一个实用工具类,用于测试项目模型。

在实现项目模型(即具体的 QAbstractItemModel 子类)时,必须遵守一组非常严格的规则,以确保项目模型(视图、代理模型等)用户的一致性。

例如,对于一个特定的索引,模型对 hasChildren() 的重新实现必须与其 rowCount() 和 columnCount() 返回的值一致。

QAbstractItemModelTester 能够帮助捕捉自定义项目模型类中最常见的错误。通过执行一系列测试,它将尝试确保模型状态始终一致。修改模型时,测试将自动重复。

QAbstractItemModelTester 采用非破坏性测试,通常包括读取特定项模型中的数据和元数据。此外,它还将尝试非法修改模型。在实现正确的模型中,这些尝试应该被拒绝,并且不应更改数据。

用法#

使用 QAbstractItemModelTester 很简单。在一个测试用例中,只需要创建一个实例,将需要测试的模型传递给构造函数。

MyModel *modelToBeTested = ...;
auto tester = new QAbstractItemModelTester(modelToBeTested);

QAbstractItemModelTester 将通过 Qt 测试日志机制报告测试失败。

也可以在测试用例之外使用 QAbstractItemModelTester。例如,测试一个应用程序使用的项目模型可能很有用,而无需为该模型构建显式的单元测试(这可能很具挑战性)。为了在测试用例之外使用 QAbstractItemModelTester,将其中一个 QAbstractItemModelTester::FailureReportingMode 枚举器传递给其构造函数,从而指定如何记录失败。

QAbstractItemModelTester 还可能会在 qt.modeltest 日志类别下作为日志消息报告额外的调试信息。此类调试日志默认是禁用的;有关如何启用它的信息,请参阅 QLoggingCategory 文档。

注意

QAbstractItemModelTester 尽管是自定义项目模型开发测试的有效帮助工具,但它(不能)捕获 QAbstractItemModel 子类中所有可能的问题。值得注意的是,它永远不会对模型执行有意义的破坏性测试,因此必须单独测试。

另请参阅

模型/视图 编程 QAbstractItemModel

FailureReportingMode##

此枚举指定 QAbstractItemModel 子类测试时,应该如何报告 QAbstractItemModelTester 的失败。

常量

描述

QAbstractItemModelTester.FailureReportingMode.QtTest

失败将作为 QtTest 测试失败来报告。

QAbstractItemModelTester.FailureReportingMode.Warning

失败将作为 qt.modeltest 记录类别的警告消息来报告。

QAbstractItemModelTester.FailureReportingMode.Fatal

失败将导致程序立即且非正常终止。通过 qFatal() 报告失败的原因。

__init__(model, mode[, parent=None])##
参数:

创建一个具有给定 parent 的模型测试实例,该实例将使用指定的 mode 报告测试失败,以测试模型 model

另请参阅

FailureReportingMode

__init__(model[, parent=None])
参数:

创建一个具有给定 parent 的模型测试实例,该实例将测试模型 model

failureReportingMode()##
返回类型:

FailureReportingMode

返回此实例使用的模式来报告测试失败。

另请参阅

FailureReportingMode

model()##
返回类型:

QAbstractItemModel

返回此实例正在测试的模型。

setUseFetchMore(value)##
参数:

value – 布尔值

如果 value 为真,则启用测试模型的动态填充,这是默认设置。如果 value 为假,则禁用。

另请参阅

fetchMore()