Spec-Zone.ru › Qt 5.13

Тип QML TestCase

Представляет собой тестовый случай для юнит-тестирования. Подробнее...

Оператор импорта: import QtTest 1.13
С версии: Qt 4.8
Наследует:

Item

  • Список всех членов, включая унаследованные

Свойства

  • completed : bool
  • name : string
  • optional : bool
  • running : bool
  • when : bool
  • windowShown : bool

Методы

  • cleanup()
  • cleanupTestCase()
  • compare(actual, expected, message)
  • object createTemporaryObject(Component component, object parent, object properties)
  • object createTemporaryQmlObject(string qml, object parent, string filePath)
  • expectFail(tag, message)
  • expectFailContinue(tag, message)
  • fail(message)
  • QtObject findChild(parent, objectName)
  • fuzzyCompare(actual, expected, delta, message)
  • object 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 или символ latin1 (строка длиной один)

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.

См. также running и when.

name : строка

Это свойство определяет имя тестового случая для отчета о результатах. Значение по умолчанию — пустая строка.

TestCase {
    name: "ButtonTests"
    ...
}

optional : bool

В тестовом приложении могут быть предоставлены несколько типов TestCase. Приложение завершится после выполнения всех из них. Если тестовый случай не нуждается в запуске (потому что предварительное условие не выполнено), то это свойство можно установить в значение true. Значение по умолчанию — false.

TestCase {
    when: false
    optional: true
    function test_not_run() {
        verify(false)
    }
}

См. также when и completed.

running : bool

Это свойство устанавливается в значение true, пока тестовый случай выполняется. Начальное значение — false, и значение снова станет false, когда тестовый случай завершится.

См. также completed и when.

when : bool

Это свойство должно быть установлено в значение 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 : bool

Это свойство устанавливается в значение 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 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.

См. также sleep() и wait().

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.13/qml-qttest-testcase.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API