QAbstractItemModelTester¶
The
QAbstractItemModelTester
class helps testingQAbstractItemModel
subclasses. More…
Synopsis¶
Functions¶
def
failureReportingMode
()def
model
()
Detailed Description¶
The
QAbstractItemModelTester
class is a utility class to test item models.When implementing an item model (that is, a concrete
QAbstractItemModel
subclass) one must abide to a very strict set of rules that ensure consistency for users of the model (views, proxy models, and so on).For instance, for a given index, a model’s reimplementation of
hasChildren()
must be consistent with the values returned byrowCount()
andcolumnCount()
.
QAbstractItemModelTester
helps catching the most common errors in custom item model classes. By performing a series of tests, it will try to check that the model status is consistent at all times. The tests will be repeated automatically every time the model is modified.
QAbstractItemModelTester
employs non-destructive tests, which typically consist in reading data and metadata out of a given item model.QAbstractItemModelTester
will also attempt illegal modifications of the model. In models which are properly implemented, such attempts should be rejected, and no data should be changed as a consequence.
Usage¶
Using
QAbstractItemModelTester
is straightforward. In a test case it is sufficient to create an instance, passing the model that needs to be tested to the constructor:MyModel *modelToBeTested = ...; auto tester = new QAbstractItemModelTester(modelToBeTested);
QAbstractItemModelTester
will report testing failures through the Qt Test logging mechanisms.It is also possible to use
QAbstractItemModelTester
outside of a test case. For instance, it may be useful to test an item model used by an application without the need of building an explicit unit test for such a model (which might be challenging). In order to useQAbstractItemModelTester
outside of a test case, pass one of theQAbstractItemModelTester::FailureReportingMode
enumerators to its constructor, therefore specifying how failures should be logged.
QAbstractItemModelTester
may also report additional debugging information as logging messages under theqt.modeltest
logging category. Such debug logging is disabled by default; refer to theQLoggingCategory
documentation to learn how to enable it.Note
While
QAbstractItemModelTester
is a valid help for development and testing of custom item models, it does not (and cannot) catch all possible problems inQAbstractItemModel
subclasses. Notably, it will never perform meaningful destructive testing of a model, which must be therefore tested separately.See also
Model/View Programming
QAbstractItemModel
- class PySide2.QtTest.QAbstractItemModelTester(model, mode[, parent=None])¶
PySide2.QtTest.QAbstractItemModelTester(model[, parent=None])
- param parent:
- param model:
- param mode:
Creates a model tester instance, with the given
parent
, that will test the modelmodel
, using the specifiedmode
to report test failures.See also
FailureReportingMode
Creates a model tester instance, with the given
parent
, that will test the modelmodel
.
- PySide2.QtTest.QAbstractItemModelTester.FailureReportingMode¶
This enumeration specifies how
QAbstractItemModelTester
should report a failure when it tests aQAbstractItemModel
subclass.Constant
Description
QAbstractItemModelTester.FailureReportingMode.QtTest
The failures will be reported through QtTest ‘s logging mechanism.
QAbstractItemModelTester.FailureReportingMode.Warning
The failures will be reported as warning messages in the
qt.modeltest
logging category.QAbstractItemModelTester.FailureReportingMode.Fatal
A failure will cause immediate and abnormal program termination. The reason for the failure will be reported using
qFatal()
.
- PySide2.QtTest.QAbstractItemModelTester.failureReportingMode()¶
- Return type:
Returns the mode that this instancing is using to report test failures.
See also
FailureReportingMode
- PySide2.QtTest.QAbstractItemModelTester.model()¶
- Return type:
Returns the model that this instance is testing.
© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.