Тип QML TestCase
Представляет собой тестовый случай. Подробнее...
| Оператор импорта: | import QtTest 1.14 |
| С тех пор: | Qt 4.8 |
| Наследует: |
Свойства
Методы
- cleanup()
- cleanupTestCase()
- compare(actual, expected, message)
- объект createTemporaryObject(Component component, object parent, object properties)
- объект createTemporaryQmlObject(строка qml, object parent, строка filePath)
- expectFail(tag, message)
- expectFailContinue(tag, message)
- fail(message)
- QtObject findChild(parent, objectName)
- fuzzyCompare(actual, expected, delta, message)
- объект grabImage(item)
- ignoreWarning(message)
- init()
- initTestCase()
- bool isPolishScheduled(object item)
- keyClick(key, modifiers, delay)
- keyPress(key, modifiers, delay)
- keyRelease(key, modifiers, delay)
- keySequence(keySequence)
- mouseClick(item, x, y, button, modifiers, delay)
- mouseDoubleClick(item, x, y, button, modifiers, delay)
- mouseDoubleClickSequence(item, x, y, button, modifiers, delay)
- mouseDrag(item, x, y, dx, dy, button, modifiers, delay)
- mouseMove(item, x, y, delay)
- mousePress(item, x, y, button, modifiers, delay)
- mouseRelease(item, x, y, button, modifiers, delay)
- mouseWheel(item, x, y, xDelta, yDelta, button, modifiers, delay)
- skip(message)
- sleep(ms)
- TouchEventSequence touchEvent(object item)
- tryCompare(obj, property, expected, timeout, message)
- tryVerify(function, timeout, message)
- verify(condition, message)
- wait(ms)
- bool waitForItemPolished(object item, int timeout)
- waitForRendering(item, timeout)
- warn(message)
Подробное описание
Введение в тестовые случаи QML
Тестовые случаи записываются как функции JavaScript внутри типа TestCase:
import QtQuick 2.0
import QtTest 1.2
TestCase {
name: "MathTests"
function test_math() {
compare(2 + 2, 4, "2 + 2 = 4")
}
function test_fail() {
compare(2 + 2, 5, "2 + 2 = 5")
}
} Функции, имена которых начинаются с «test_», рассматриваются как тестовые случаи, которые должны быть выполнены. Свойство name используется для добавления префикса к функциям в выводе:
********* Start testing of MathTests ********* Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : MathTests::initTestCase() FAIL! : MathTests::test_fail() 2 + 2 = 5 Actual (): 4 Expected (): 5 Loc: [/home/.../tst_math.qml(12)] PASS : MathTests::test_math() PASS : MathTests::cleanupTestCase() Totals: 3 passed, 1 failed, 0 skipped ********* Finished testing of MathTests *********
Из-за того, как работают свойства JavaScript, порядок обнаружения тестовых функций непредсказуем. Для повышения предсказуемости тестовая среда будет сортировать функции по возрастанию имени. Это может помочь, когда нужно выполнить два теста в определенном порядке.
Можно предоставить несколько типов TestCase. Программа тестирования завершит работу, когда все они будут завершены. Если тестовый случай не должен выполняться (потому что предварительное условие не выполнено), то можно установить optional в значение true.
Тесты с набором данных
Табличные данные могут быть предоставлены тесту с использованием имени функции, заканчивающегося на «_data». Кроме того, можно использовать функцию init_data() для предоставления стандартных тестовых данных для всех тестовых функций в типе TestCase:
import QtQuick 2.0
import QtTest 1.2
TestCase {
name: "DataTests"
function init_data() {
return [
{tag:"init_data_1", a:1, b:2, answer: 3},
{tag:"init_data_2", a:2, b:4, answer: 6}
];
}
function test_table_data() {
return [
{tag: "2 + 2 = 4", a: 2, b: 2, answer: 4 },
{tag: "2 + 6 = 8", a: 2, b: 6, answer: 8 },
]
}
function test_table(data) {
//data comes from test_table_data
compare(data.a + data.b, data.answer)
}
function test__default_table(data) {
//data comes from init_data
compare(data.a + data.b, data.answer)
}
} Тестовая среда будет перебирать все строки в таблице и передавать каждую строку тестовой функции. Как показано, столбцы можно извлечь для использования в тесте. Столбец tag специальный — он печатается тестовой средой при провале строки, чтобы помочь читателю определить, какой случай провалился среди набора в противном случае успешных тестов.
Benchmarks
Функции, имена которых начинаются с «benchmark_», будут запускаться несколько раз с помощью фреймворка Qt для бенчмарков, а среднее время выполнения для запусков будет сообщаться. Это эквивалентно использованию макроса QBENCHMARK в C++ версии QTestLib.
TestCase {
id: top
name: "CreateBenchmark"
function benchmark_create_component() {
var component = Qt.createComponent("item.qml")
var obj = component.createObject(top)
obj.destroy()
component.destroy()
}
}
RESULT : CreateBenchmark::benchmark_create_component:
0.23 msecs per iteration (total: 60, iterations: 256)
PASS : CreateBenchmark::benchmark_create_component() Чтобы получить эффект макроса QBENCHMARK_ONCE, добавьте префикс «benchmark_once_» к имени тестовой функции.
Моделирование событий клавиатуры и мыши
Методы keyPress(), keyRelease() и keyClick() могут использоваться для моделирования событий клавиатуры в тестовых случаях. События передаются текущему фокусированному элементу QML. Можно передать значение перечисления Qt.Key или латинский символ (строка длиной один)
Rectangle {
width: 50; height: 50
focus: true
TestCase {
name: "KeyClick"
when: windowShown
function test_key_click() {
keyClick(Qt.Key_Left)
keyClick("a")
...
}
}
} Методы mousePress(), mouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence() и mouseMove() могут использоваться для моделирования событий мыши аналогичным образом.
Примечание: события клавиатуры и мыши могут быть переданы только после того, как главное окно будет показано. Попытки передать события до этого момента будут неудачными. Используйте свойства when и windowShown для отслеживания показа главного окна.
Управление динамически созданными тестовыми объектами
Типичный шаблон для QML-тестов — динамически создать элемент, а затем уничтожить его в конце функции теста:
TestCase {
id: testCase
name: "MyTest"
when: windowShown
function test_click() {
var item = Qt.createQmlObject("import QtQuick 2.0; Item {}", testCase);
verify(item);
// Test item...
item.destroy();
}
} Проблема с этим шаблоном заключается в том, что любые сбои в функции теста приведут к пропуску вызова item.destroy(), оставляя элемент в сцене до завершения тестового случая. Это может привести к конфликтам с будущими тестами; например, путем блокировки событий ввода или создания не относящихся к делу отладочных выводи, затрудняющих отслеживание выполнения кода.
Вызов createTemporaryQmlObject() гарантирует уничтожение объекта по завершении тестовой функции:
TestCase {
id: testCase
name: "MyTest"
when: windowShown
function test_click() {
var item = createTemporaryQmlObject("import QtQuick 2.0; Item {}", testCase);
verify(item);
// Test item...
// Don't need to worry about destroying "item" here.
}
} Для объектов, созданных с помощью функции createObject() компонента Component, можно использовать функцию createTemporaryObject().
См. также SignalSpy и Qt Quick Test.
Документация по свойствам
completed : bool
Это свойство будет установлено в значение true после завершения выполнения тестового случая. Тестовые случаи выполняются только один раз. Начальное значение — false.
name : строка
Это свойство определяет имя тестового случая для отчётности результатов. Значение по умолчанию — пустая строка.
TestCase {
name: "ButtonTests"
...
} optional : логическое
В тестовом приложении могут быть предоставлены несколько типов TestCase. Приложение завершит свою работу после завершения всех типов. Если тестовый случай не нужно запускать (потому что условие предварительного выполнения не выполнено), то это свойство можно установить в значение true. Значение по умолчанию — false.
TestCase {
when: false
optional: true
function test_not_run() {
verify(false)
}
} running : логическое
Это свойство будет установлено в значение true во время выполнения тестового случая. Начальное значение — false, и значение вернётся к false после завершения тестового случая.
when : логическое
Это свойство должно быть установлено в значение true, когда приложение хочет запустить тестовые случаи. Значение по умолчанию — true. В следующем примере тест запускается при нажатии пользователем кнопки мыши:
Rectangle {
id: foo
width: 640; height: 480
color: "cyan"
MouseArea {
id: area
anchors.fill: parent
}
property bool bar: true
TestCase {
name: "ItemTests"
when: area.pressed
id: test1
function test_bar() {
verify(bar)
}
}
} Тестовое приложение завершит свою работу после того, как все типы TestCase будут активированы и выполнены. Свойство optional можно использовать для исключения типа TestCase.
См. также optional и completed.
windowShown : логическое
Это свойство будет установлено в значение true после отображения окна просмотра QML. Обычно тестовые случаи запускаются сразу после загрузки тестового приложения и до отображения окна. Если тестовый случай включает визуальные типы и поведение, то его может потребоваться отложить до отображения окна.
Button {
id: button
onClicked: text = "Clicked"
TestCase {
name: "ClickTest"
when: windowShown
function test_click() {
button.clicked();
compare(button.text, "Clicked");
}
}
} Документация методов
cleanup()
Эта функция вызывается после каждой тестовой функции, которая выполняется в типе TestCase. По умолчанию ничего не выполняется. Приложение может предоставить собственную реализацию для выполнения очистки после каждой тестовой функции.
См. также init() и cleanupTestCase().
cleanupTestCase()
Эта функция вызывается после завершения всех других тестовых функций в типе TestCase. По умолчанию ничего не выполняется. Приложение может предоставить собственную реализацию для выполнения очистки тестового случая.
См. также initTestCase() и cleanup().
compare(actual, expected, message = "")
Приводит к ошибке текущего тестового случая, если actual не совпадает с expected, и отображает необязательное message. Аналогично QCOMPARE(actual, expected) в C++.
См. также tryCompare() и fuzzyCompare.
объект createTemporaryObject(Компонент component, объект parent, объект properties)
Эта функция динамически создаёт объект QML из заданного component с указанным необязательным parent и properties. Возвращаемый объект будет уничтожен (если он ещё не был уничтожен) после завершения выполнения cleanup(), что означает, что объекты, созданные с помощью этой функции, гарантированно будут уничтожены после каждого теста, независимо от того, пройден ли тест или нет.
Если при создании объекта произошла ошибка, будет возвращено null.
Эта функция вызывает component.createObject() в качестве внутреннего вызова.
Этот метод был представлен в Qt 5.9.
См. также Управление динамически созданными тестовыми объектами.
объект createTemporaryQmlObject(строка qml, объект parent, строка filePath)
Эта функция динамически создаёт объект QML из заданной строки qml с указанным parent. Возвращаемый объект будет уничтожен (если он ещё не был уничтожен) после завершения выполнения cleanup(), что означает, что объекты, созданные с помощью этой функции, гарантированно будут уничтожены после каждого теста, независимо от того, пройден ли тест или нет.
Если при создании объекта произошла ошибка, будет возвращено null.
Если указан filePath, он будет использован для отчёта об ошибках для созданного объекта.
Эта функция вызывает Qt.createQmlObject() в качестве внутреннего вызова.
Этот метод был представлен в Qt 5.9.
См. также Управление динамически созданными тестовыми объектами.
expectFail(tag, message)
В тестовом случае с управляемыми данными отмечает строку, связанную с tag, как ожидающую ошибку. При возникновении ошибки отображается message, тест прерывается и отмечается как пройденный. Аналогично QEXPECT_FAIL(tag, message, Abort) в C++.
Если тест не является тестовым случаем с управляемыми данными, то tag должен быть пустой строкой.
См. также expectFailContinue().
expectFailContinue(tag, message)
В тестовом случае с управляемыми данными отмечает строку, связанную с tag, как ожидающую ошибку. При возникновении ошибки отображается message, и тест продолжается. Аналогично QEXPECT_FAIL(tag, message, Continue) в C++.
Если тест не является тестовым случаем с управляемыми данными, то tag должен быть пустой строкой.
См. также expectFail().
fail(message = "")
Приводит к ошибке текущего тестового случая с необязательным message. Аналогично QFAIL(message) в C++.
QtObject findChild(parent, objectName)
Возвращает первого потомка parent с именем objectName, или null, если такого элемента нет. Поиск производится рекурсивно по всем потомкам, как визуальным, так и не визуальным, причём визуальные потомки ищутся в первую очередь.
compare(findChild(item, "childObject"), expectedChildObject);
Этот метод был представлен в Qt 5.4.
fuzzyCompare(actual, expected, delta, message = "")
Приводит к ошибке текущего тестового случая, если разница между actual и expected больше, чем delta, и отображает необязательное message. Аналогично qFuzzyCompare(actual, expected) в C++, но с необходимым значением delta.
Эта функция также может использоваться для сравнения цветов, если оба значения actual и expected могут быть преобразованы в значения цветов. Если какая-либо из разностей для значений каналов RGBA больше, чем delta, тест завершается неудачно.
См. также tryCompare() и compare().
объект grabImage(item)
Возвращает снимок изображения заданного item.
Возвращаемый объект изображения имеет следующие свойства:
- width Возвращает ширину базового изображения (с 5.10)
- height Возвращает высоту базового изображения (с 5.10)
- size Возвращает размер базового изображения (с 5.10)
Кроме того, возвращаемый объект изображения имеет следующие методы:
-
red(x, y)Возвращает значение красного канала пикселя в позиции x, y -
green(x, y)Возвращает значение зелёного канала пикселя в позиции x, y -
blue(x, y)Возвращает значение синего канала пикселя в позиции x, y -
alpha(x, y)Возвращает значение альфа-канала пикселя в позиции x, y -
pixel(x, y)Возвращает значение цвета пикселя в позиции x, y -
equals(image)Возвращаетtrue, если это изображение идентично image - см. QImage::operator== (с 5.6)Например:
var image = grabImage(rect); compare(image.red(10, 10), 255); compare(image.pixel(20, 20), Qt.rgba(255, 0, 0, 255)); rect.width += 10; var newImage = grabImage(rect); verify(!newImage.equals(image));
-
save(path)Сохраняет изображение в указанный path. Если изображение не может быть сохранено, будет брошено исключение. (с 5.10)Это может быть полезно для проведения анализа после завершения тестов с ошибками, например:
var image = grabImage(rect); try { compare(image.width, 100); } catch (ex) { image.save("debug.png"); throw ex; }
ignoreWarning(message)
Отмечает message как проигнорированное сообщение об ошибке. При его возникновении предупреждение не будет выведено, а тест пройдёт. Если сообщение не возникает, тест завершится неудачно. Аналогично QTest::ignoreMessage(QtWarningMsg, message) в C++.
Начиная с Qt 5.12, message может быть либо строкой, либо регулярным выражением, обеспечивающим шаблон игнорируемых сообщений.
Например, следующий фрагмент игнорирует строковое предупреждение:
ignoreWarning("Something sort of bad happened") А следующий фрагмент игнорирует регулярное выражение, соответствующее ряду возможных сообщений об ошибках:
ignoreWarning(new RegExp("[0-9]+ bad things happened")) Примечание: Несмотря на то, что это объект JavaScript RegExp, он не будет интерпретироваться как таковой; вместо этого шаблон будет передан в QRegularExpression.
См. также warn().
init()
Эта функция вызывается перед каждой функцией теста, которая выполняется в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить свою реализацию для выполнения инициализации перед каждой функцией теста.
См. также cleanup() и initTestCase().
initTestCase()
Эта функция вызывается перед любыми другими функциями тестирования в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить свою реализацию для выполнения инициализации тестового случая.
См. также cleanupTestCase() и init().
bool isPolishScheduled(object item)
Возвращает true, если для item не был вызван updatePolish() с момента последнего вызова polish(), в противном случае возвращает false.
При назначении значений свойствам в QML любое макетирование, которое должно выполняться элементом в результате назначения, может не вступить в силу немедленно, а вместо этого может быть отложено до того момента, пока элемент не будет отполирован. В таких случаях вы можете использовать эту функцию, чтобы убедиться, что элемент был отполирован перед продолжением выполнения теста. Например:
verify(isPolishScheduled(item)) verify(waitForItemPolished(item))
Без вызова isPolishScheduled() выше, вызов waitForItemPolished() может увидеть, что полировка не была запланирована, и поэтому пройти мгновенно, предположив, что элемент уже был отполирован. Эта функция делает очевидным, почему элемент не был отполирован, и позволяет тестам завершаться неудачно в таких обстоятельствах.
Этот метод был представлен в Qt 5.13.
См. также waitForItemPolished(), QQuickItem::polish() и QQuickItem::updatePolish().
keyClick(key, modifiers = Qt.NoModifier, delay = -1)
Имитирует нажатие клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест будет ожидать delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Дополнительные сведения см. в QGuiApplication::focusWindow().
См. также keyPress() и keyRelease().
keyPress(key, modifiers = Qt.NoModifier, delay = -1)
Имитирует нажатие клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест будет ожидать delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Дополнительные сведения см. в QGuiApplication::focusWindow().
Примечание: В какой-то момент вы должны отпустить клавишу, используя keyRelease().
См. также keyRelease() и keyClick().
keyRelease(key, modifiers = Qt.NoModifier, delay = -1)
Имитирует отпускание клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест будет ожидать delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Дополнительные сведения см. в QGuiApplication::focusWindow().
См. также keyPress() и keyClick().
keySequence(keySequence)
Имитирует нажатие последовательности клавиш keySequence. Последовательность клавиш может быть задана одним из стандартных сочетаний клавиш или может быть описана строкой, содержащей последовательность до четырёх нажатий клавиш.
Каждое событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Дополнительные сведения см. в QGuiApplication::focusWindow().
Этот метод был представлен в Qt 5.10.
См. также keyPress(), keyRelease(), GNU Emacs Style Key Sequences и Shortcut.sequence.
mouseClick(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует нажатие мыши button с необязательными modifiers на элементе item. Позиция нажатия определяется значениями x и y. Если x и y не определены, позиция будет в центре элемента item. Если delay задано, тест будет ожидать указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат item в систему координат окна и затем передаётся. Если item скрыт другим элементом или элемент item занимает данную позицию, то событие будет передано вместо этого другому элементу.
См. также mousePress(), mouseRelease(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseDoubleClick(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует двойной щелчок мыши button с необязательными modifiers на элементе item. Позиция щелчка определяется значениями x и y. Если x и y не определены, позиция будет в центре элемента item. Если delay задано, тест будет ожидать указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат item в систему координат окна и затем передаётся. Если item скрыт другим элементом или элемент item занимает данную позицию, то событие будет передано вместо этого другому элементу.
См. также mouseDoubleClickSequence(), mousePress(), mouseRelease(), mouseClick(), mouseMove(), mouseDrag() и mouseWheel().
mouseDoubleClickSequence(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует полную последовательность событий, генерируемых двойным щелчком мыши button с необязательными modifiers на элементе item.
Этот метод воспроизводит последовательность событий мыши, генерируемых при двойном щелчке пользователем: Нажатие-Отпускание-Нажатие-Двойной щелчок-Отпускание.
Позиция щелчка определяется значениями x и y. Если x и y не определены, позиция будет в центре элемента item. Если delay задано, тест будет ожидать указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат item в систему координат окна и затем передаётся. Если item скрыт другим элементом или элемент item занимает данную позицию, то событие будет передано вместо этого другому элементу.
Этот метод QML был представлен в Qt 5.5.
См. также mouseDoubleClick(), mousePress(), mouseRelease(), mouseClick(), mouseMove(), mouseDrag() и mouseWheel().
mouseDrag(item, x, y, dx, dy, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует перетаскивание мыши по элементу item с нажатой кнопкой button и необязательными modifiers. Начальная позиция перетаскивания задаётся значениями x и y, а расстояние перетаскивания задаётся значениями dx и dy. Если delay задано, тест будет ожидать указанное количество миллисекунд до отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат item в систему координат окна и затем передаётся. Если item скрыт другим элементом или элемент item занимает данную позицию, то событие будет передано вместо этого другому элементу.
См. также mousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseRelease() и mouseWheel().
mouseMove(item, x, y, delay = -1)
Перемещает указатель мыши в позицию, заданную координатами x и y внутри элемента item. Если задан параметр delay (в миллисекундах), тест подождет перед перемещением указателя мыши.
Позиция, заданная координатами x и y, преобразуется из системы координат элемента item в координаты окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает данную позицию, событие будет передано другому элементу вместо него.
См. также mousePress(), mouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseDrag() и mouseWheel().
mousePress(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует нажатие кнопки мыши button с необязательными modifiers на элементе item. Позиция определяется координатами x и y. Если x или y не определены, позиция будет центром элемента item. Если задан параметр delay, тест подождет указанное количество миллисекунд перед нажатием.
Позиция, заданная координатами x и y, преобразуется из системы координат элемента item в координаты окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает данную позицию, событие будет передано другому элементу вместо него.
См. также mouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseRelease(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует отпускание кнопки мыши button с необязательными modifiers на элементе item. Позиция отпускания определяется координатами x и y. Если x или y не определены, позиция будет центром элемента item. Если задан параметр delay, тест подождет указанное количество миллисекунд перед отпусканием кнопки.
Позиция, заданная координатами x и y, преобразуется из системы координат элемента item в координаты окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает данную позицию, событие будет передано другому элементу вместо него.
См. также mousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseWheel(item, x, y, xDelta, yDelta, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует вращение колёсика мыши на элементе item с нажатой кнопкой button и необязательными modifiers. Позиция события вращения определяется координатами x и y. Если задан параметр delay, тест подождет указанное количество миллисекунд перед отпусканием кнопки.
Позиция, заданная координатами x и y, преобразуется из системы координат элемента item в координаты окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает данную позицию, событие будет передано другому элементу вместо него.
Значения xDelta и yDelta содержат расстояние вращения колёсика в восьмых градусах. Смотрите QWheelEvent::angleDelta() для более подробной информации.
См. также mousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseRelease(), mouseDrag() и QWheelEvent::angleDelta().
skip(message = "")
Пропускает текущий тест и выводит необязательное сообщение message. Если это тест с данными, то пропускается только текущая строка. Аналогично QSKIP(message) в C++.
sleep(ms)
Засыпает на ms миллисекунд без обработки событий Qt.
См. также wait() и waitForRendering().
TouchEventSequence touchEvent(object item)
Инициализирует последовательность событий касания через симулированное устройство QTouchDevice::TouchScreen. События передаются окну, содержащему item.
Возвращаемый объект используется для перечисления событий, которые должны быть переданы через одно событие QTouchEvent. Касания передаются окну, содержащему TestCase, если не указано иное.
Этот метод был добавлен в Qt 5.9.
См. также TouchEventSequence::press(), TouchEventSequence::move(), TouchEventSequence::release(), TouchEventSequence::stationary(), TouchEventSequence::commit() и QTouchDevice::TouchScreen.
tryCompare(obj, property, expected, timeout = 5000, message = "")
Приводит текущий тест к неудаче, если указанное свойство property объекта obj не совпадает с ожидаемым значением expected, и отображает необязательное сообщение message. Тест будет повторён несколько раз, пока не будет достигнуто время ожидания timeout (в миллисекундах).
Эта функция предназначена для тестирования приложений, где свойство меняет значение на основе асинхронных событий. Используйте compare() для тестирования синхронных изменений свойства.
SignalSpy::wait() предоставляет альтернативный способ ожидания выдачи сигнала.
См. также compare() и SignalSpy::wait().
tryVerify(function, timeout = 5000, message = "")
Приводит текущий тест к неудаче, если функция function не вернёт значение true до истечения указанного времени ожидания timeout (в миллисекундах). Функция вычисляется несколько раз до достижения предела времени ожидания. Необязательное сообщение message отображается при ошибке.
Эта функция предназначена для тестирования приложений, где условие меняется на основе асинхронных событий. Используйте verify() для тестирования синхронных изменений условия и tryCompare() для тестирования асинхронных изменений свойств.
Например, в приведенном ниже коде нельзя использовать tryCompare(), потому что свойство currentItem может быть null на короткое время:
Вместо этого, мы можем использовать tryVerify() для проверки того, что currentItem не является null, а затем использовать обычный compare после этого:
Этот метод был добавлен в Qt 5.8.
См. также verify(), compare(), tryCompare() и SignalSpy::wait().
verify(condition, message = "")
Приводит текущий тест к неудаче, если условие condition ложно, и отображает необязательное сообщение message. Аналогично QVERIFY(condition) или QVERIFY2(condition, message) в C++.
wait(ms)
Ожидает ms миллисекунд, обрабатывая события Qt.
См. также sleep() и waitForRendering().
bool waitForItemPolished(object item, int timeout = 5000)
Ожидает timeout миллисекунд или пока метод updatePolish() не будет вызван для элемента item.
Возвращает true, если updatePolish() был вызван для элемента item в течение timeout миллисекунд, в противном случае возвращает false.
Этот метод был добавлен в Qt 5.13.
См. также isPolishScheduled(), QQuickItem::polish() и QQuickItem::updatePolish().
waitForRendering(item, timeout = 5000)
Ожидает timeout миллисекунд или пока элемент item не будет отрисован рендерером. Возвращает true, если item отрисован в течение timeout миллисекунд, в противном случае возвращает false. Значение по умолчанию для timeout — 5000.
warn(message)
Выводит message как сообщение об ошибке. Аналогично QWARN(message) в C++.
См. также ignoreWarning().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qttest-testcase.html