QTest#
The QTest namespace contains all the functions and declarations that are related to Qt Test. More…
Synopsis#
Static functions#
def
addColumnInternal
(id, name)def
asciiToKey
(ascii)def
compare_ptr_helper
(t1, t2, actual, expected, file, line)def
compare_ptr_helper
(t1, t2, actual, expected, file, line)def
compare_string_helper
(t1, t2, actual, expected, file, line)def
currentAppName
()def
currentDataTag
()def
currentTestFailed
()def
currentTestFunction
()def
currentTestResolved
()def
failOnWarning
(messagePattern)def
failOnWarning
(message)def
formatString
(prefix, suffix, numArguments)def
ignoreMessage
(type, messagePattern)def
ignoreMessage
(type, message)def
keyToAscii
(key)def
qCaught
(expected, what, file, line)def
qCleanup
()def
qElementData
(elementName, metaTypeId)def
qExpectFail
(dataIndex, comment, mode, file, line)def
qExtractTestData
(dirName)def
qFindTestData
(basepath[, file=None[, line=0[, builddir=None[, sourcedir=None]]]])def
qFindTestData
(basepath[, file=None[, line=0[, builddir=None[, sourcedir=None]]]])def
qGlobalData
(tagName, typeId)def
qRun
()def
qSkip
(message, file, line)def
qSleep
(ms)def
qWait
(ms)def
runningTest
()def
setBenchmarkResult
(result, metric)def
setMainSourcePath
(file[, builddir=None])def
testObject
()def
toPrettyCString
(unicode, length)
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
See the Qt Test Overview for information about how to write unit tests.
- PySide6.QtTest.QTest.TestFailMode#
This enum describes the modes for handling a check, such as by QVERIFY()
or QCOMPARE()
macros, that is known to fail. The mode applies regardless of whether the check fails or succeeds.
Constant
Description
QTest.Abort
Aborts the execution of the test. Use this mode when it doesn’t make sense to execute the test any further after the problematic check.
QTest.Continue
Continues execution of the test after the problematic check.
See also
QEXPECT_FAIL()
- PySide6.QtTest.QTest.ComparisonOperation#
New in version 6.4.
- PySide6.QtTest.QTest.QBenchmarkMetric#
This enum lists all the things that can be benchmarked.
Constant
Description
QTest.FramesPerSecond
Frames per second
QTest.BitsPerSecond
Bits per second
QTest.BytesPerSecond
Bytes per second
QTest.WalltimeMilliseconds
Clock time in milliseconds
QTest.WalltimeNanoseconds
Clock time in nanoseconds
QTest.BytesAllocated
Memory usage in bytes
QTest.Events
Event count
QTest.CPUTicks
CPU time
QTest.CPUMigrations
Process migrations between CPUs
QTest.CPUCycles
CPU cycles
QTest.RefCPUCycles
Reference CPU cycles
QTest.BusCycles
Bus cycles
QTest.StalledCycles
Cycles stalled
QTest.InstructionReads
Instruction reads
QTest.Instructions
Instructions executed
QTest.BranchInstructions
Branch-type instructions
QTest.BranchMisses
Branch instructions that were mispredicted
QTest.CacheReferences
Cache accesses of any type
QTest.CacheMisses
Cache misses of any type
QTest.CacheReads
Cache reads / loads
QTest.CacheReadMisses
Cache read / load misses
QTest.CacheWrites
Cache writes / stores
QTest.CacheWriteMisses
Cache write / store misses
QTest.CachePrefetches
Cache prefetches
QTest.CachePrefetchMisses
Cache prefetch misses
QTest.ContextSwitches
Context switches
QTest.PageFaults
Page faults of any type
QTest.MinorPageFaults
Minor page faults
QTest.MajorPageFaults
Major page faults
QTest.AlignmentFaults
Faults caused due to misalignment
QTest.EmulationFaults
Faults that needed software emulation
Note that WalltimeNanoseconds
and BytesAllocated
are only provided for use via setBenchmarkResult()
, and results in those metrics are not able to be provided automatically by the QTest framework.
See also
benchmarkMetricName()
benchmarkMetricUnit()
New in version 4.7.
- static PySide6.QtTest.QTest.addColumnInternal(id, name)#
- Parameters:
id – int
name – str
- static PySide6.QtTest.QTest.compare_ptr_helper(t1, t2, actual, expected, file, line)#
- Parameters:
actual – str
expected – str
file – str
line – int
- Return type:
bool
- static PySide6.QtTest.QTest.compare_ptr_helper(t1, t2, actual, expected, file, line)
- Parameters:
t1 –
void
t2 –
void
actual – str
expected – str
file – str
line – int
- Return type:
bool
- static PySide6.QtTest.QTest.compare_string_helper(t1, t2, actual, expected, file, line)#
- Parameters:
t1 – str
t2 – str
actual – str
expected – str
file – str
line – int
- Return type:
bool
- static PySide6.QtTest.QTest.currentAppName()#
- Return type:
str
Returns the name of the binary that is currently executed.
- static PySide6.QtTest.QTest.currentDataTag()#
- Return type:
str
Returns the name of the current test data. If the test doesn’t have any assigned testdata, the function returns None
.
- static PySide6.QtTest.QTest.currentTestFailed()#
- Return type:
bool
Returns true
if the current test function has failed, otherwise false.
See also
- static PySide6.QtTest.QTest.currentTestFunction()#
- Return type:
str
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns the name of the test function that is currently executed.
Example:
def cleanup(self): if qstrcmp(QTest.currentTestFunction(), "myDatabaseTest") == 0: # clean up all database connections closeAllDatabases()
- static PySide6.QtTest.QTest.currentTestResolved()#
- Return type:
bool
Returns true
if the current test function has failed or skipped.
This applies if the test has failed or exercised a skip. When it is true, the test function should return early. In particular, the QTRY_*
macros and the test event loop terminate their loops early if executed during the test function (but not its cleanup()). After a test has called a helper function that uses this module’s macros, it can use this function to test whether to return early.
See also
- static PySide6.QtTest.QTest.failOnWarning(messagePattern)#
- Parameters:
messagePattern –
PySide6.QtCore.QRegularExpression
Appends a test failure to the test log for each warning that matches messagePattern
.
The test function will continue execution when a failure is added. To abort the test instead, you can check currentTestFailed()
and return early if it’s true
.
For each warning, the first pattern that matches will cause a failure, and the remaining patterns will be ignored.
All patterns are cleared at the end of each test function.
void FileTest::loadFiles() { QTest::failOnWarning(QRegularExpression("^Failed to load")); // Each of these will cause a test failure: qWarning() << "Failed to load image"; qWarning() << "Failed to load video"; }
To fail every test that triggers a given warning, pass a suitable regular expression to this function in init() :
void FileTest::init() { QTest::failOnWarning(QRegularExpression(".?")); }
Note
ignoreMessage()
takes precedence over this function, so any warnings that match a pattern given to both ignoreMessage()
and failOnWarning()
will be ignored.
See also
- static PySide6.QtTest.QTest.failOnWarning(message)
- Parameters:
message – str
This function overloads failOnWarning()
.
Appends a test failure to the test log if the message
is output.
See also
- static PySide6.QtTest.QTest.formatString(prefix, suffix, numArguments)#
- Parameters:
prefix – str
suffix – str
numArguments – int
- Return type:
char
- static PySide6.QtTest.QTest.ignoreMessage(type, messagePattern)#
- Parameters:
type –
QtMsgType
messagePattern –
PySide6.QtCore.QRegularExpression
This is an overloaded function.
Ignores messages created by qDebug(), qInfo() or qWarning(). If the message matching messagePattern
with the corresponding type
is outputted, it will be removed from the test log. If the test finished and the message was not outputted, a test failure is appended to the test log.
Note
Invoking this function will only ignore one message. If the message you want to ignore is output twice, you have to call ignoreMessage()
twice, too.
- static PySide6.QtTest.QTest.ignoreMessage(type, message)
- Parameters:
type –
QtMsgType
message – str
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Ignores messages created by qDebug(), qInfo() or qWarning(). If the message
with the corresponding type
is outputted, it will be removed from the test log. If the test finished and the message
was not outputted, a test failure is appended to the test log.
Note
Invoking this function will only ignore one message. If the message you want to ignore is output twice, you have to call ignoreMessage() twice, too.
Example:
dir = QDir() QTest.ignoreMessage(QtWarningMsg, "QDir.mkdir: Empty or null file name(s)") dir.mkdir("")
The example above tests that QDir::mkdir() outputs the right warning when invoked with an invalid file name.
- static PySide6.QtTest.QTest.qCaught(expected, what, file, line)#
- Parameters:
expected – str
what – str
file – str
line – int
- static PySide6.QtTest.QTest.qCleanup()#
- static PySide6.QtTest.QTest.qElementData(elementName, metaTypeId)#
- Parameters:
elementName – str
metaTypeId – int
- Return type:
void
- static PySide6.QtTest.QTest.qExpectFail(dataIndex, comment, mode, file, line)#
- Parameters:
dataIndex – str
comment – str
mode –
TestFailMode
file – str
line – int
- Return type:
bool
- static PySide6.QtTest.QTest.qExtractTestData(dirName)#
- Parameters:
dirName – str
- Return type:
QSharedPointer
Extracts a directory from resources to disk. The content is extracted recursively to a temporary folder. The extracted content is removed automatically once the last reference to the return value goes out of scope.
dirName
is the name of the directory to extract from resources.
Returns the temporary directory where the data was extracted or null in case of errors.
- static PySide6.QtTest.QTest.qFindTestData(basepath[, file=None[, line=0[, builddir=None[, sourcedir=None]]]])#
- Parameters:
basepath – str
file – str
line – int
builddir – str
sourcedir – str
- Return type:
str
- static PySide6.QtTest.QTest.qFindTestData(basepath[, file=None[, line=0[, builddir=None[, sourcedir=None]]]])
- Parameters:
basepath – str
file – str
line – int
builddir – str
sourcedir – str
- Return type:
str
- static PySide6.QtTest.QTest.qGlobalData(tagName, typeId)#
- Parameters:
tagName – str
typeId – int
- Return type:
void
- static PySide6.QtTest.QTest.qRun()#
- Return type:
int
- static PySide6.QtTest.QTest.qSkip(message, file, line)#
- Parameters:
message – str
file – str
line – int
- static PySide6.QtTest.QTest.qSleep(ms)#
- Parameters:
ms – int
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Sleeps for ms
milliseconds, blocking execution of the test. qSleep() will not do any event processing and leave your test unresponsive. Network communication might time out while sleeping. Use qWait()
to do non-blocking sleeping.
ms
must be greater than 0.
Note
Starting from Qt 6.7, this function is implemented using std::this_thread::sleep_for
, so the accuracy of time spent depends on the Standard Library implementation. Before Qt 6.7 this function called either nanosleep()
on Unix or Sleep()
on Windows, so the accuracy of time spent in this function depended on the operating system.
Example:
QTest.qSleep(250)See also
- static PySide6.QtTest.QTest.qWait(ms)#
- Parameters:
ms – int
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Waits for ms
milliseconds. While waiting, events will be processed and your test will stay responsive to user interface events or network communication.
Example:
i = 0 while myNetworkServerNotResponding() and i++ < 50: QTest.qWait(250)
The code above will wait until the network server is responding for a maximum of about 12.5 seconds.
- static PySide6.QtTest.QTest.runningTest()#
- Return type:
bool
- static PySide6.QtTest.QTest.setBenchmarkResult(result, metric)#
- Parameters:
result – float
metric –
QBenchmarkMetric
Sets the benchmark result for this test function to result
.
Use this function if you want to report benchmark results without using the QBENCHMARK macro. Use metric
to specify how Qt Test should interpret the results.
The context for the result will be the test function name and any data tag from the _data function. This function can only be called once in each test function, subsequent calls will replace the earlier reported results.
Note that the -iterations command line argument has no effect on test functions without the QBENCHMARK macro.
- static PySide6.QtTest.QTest.setMainSourcePath(file[, builddir=None])#
- Parameters:
file – str
builddir – str
- static PySide6.QtTest.QTest.testObject()#
- Return type:
- static PySide6.QtTest.QTest.toPrettyCString(unicode, length)#
- Parameters:
unicode – str
length – int
- Return type:
char