Общие сведения

ВступлениеПодготовка к запускуАрхитектура платформы TestoПорядок запускаПолитика запуска тестов

Обучающие материалы по Testo для Hyper-V

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Доступ в Интернет из виртуальной машиныЧасть 4. Гостевые дополненияЧасть 5. ПараметрыЧасть 6. КешированиеЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. Циклы

Обучающие материалы по Testo для QEMU

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Гостевые дополненияЧасть 4. ПараметрыЧасть 5. КешированиеЧасть 6. Доступ в Интернет из виртуальной машиныЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. ЦиклыЧасть 16. Макросы с объявлениями

Спецификация языка

Общая структура скриптовых файловБазовые конструкции языкаOбъявление виртуальной машиныОбъявление виртуального флеш-накопителяОбъявление виртуальной сетиПараметрыОбъявление тестовМакросыДействия с виртуальными машинамиДействия с мышкойПоиск изображений на экранеДействия с виртуальными флеш-накопителямиУсловияЦиклыСписок идентификаторов клавиш

Запросы на языке Javascript

Общая концепция построения JS-селекторовВстроенные глобальные функции JavascriptИсключенияКласс TextTensorКласс ImgTensorКласс Point

Параметры

Объявление параметров

Использование параметров может значительно упростить создание тестовых сценариев и сделать их более гибкими. С помощью параметров вы можете объявлять строковые константы в виде глобально-видимых идентификаторов. После объявления мы можете обращаться к этим идентификаторам чтобы получить значения строковых констант.

Для объявления параметров (глобальных констант) используется директива param. Формат директивы выглядит следующим образом:

param <name> <value>
  • name -Тип: идентификатор. Имя параметра. Должно быть уникальным.
  • value - Тип: строка. Значение параметра.

После объявления параметра к нему можно обращаться в тестовом сценарии. При объявлении параметров можно использовать значения других объявленных параметров.

Параметры можно объявлять с помощью аргумента командной строки param <param_name> <param_value>. В этом случае к этому параметру можно будет обращаться в любом месте тестового сценария точно так же, как к обычному параметру, объявленному с помощью директивы param.

К значению параметра можно обращаться в любом месте тестового сценария. Даже если обращение происходит ещё до непоредственного объявления.

Если имя параметра, переданного через аргумент командной строки, конфликтует с именем параметра, указанного с помощью директивы param, то возникнет соответствующая ошибка.

Будучи однажды объявленным, параметр не может менять свое значение в дальнейшем. При попытке повторно объявить параметр возникнет ошибка.

Пример

Предположим, что один параметр был передан с помощью командной строки (--param ISO_DIR /path/to/iso)

param param1 "value1"  # превращается в "value1"
param param2 "${ISO_DIR}/${param1}" #превращается в "/path/to/iso/value1"

Служебные (зарезерированные) параметры

Некоторые параметры выполняют служебную роль и позволяют управлять значениями по-умолчанию для таймаутов (спецификатор timeout) и интервалов (спецификатор interval) в различных командах. Например, для команды wait время ожидания по умолчанию равно одной минуте. Если требуется изменить время ожидания по умолчанию (например, на 2 минуты), то необходимо написать следующее:

test tmp1 {
    my_vm wait "Hello world" #таймаут по умолчанию составит 2 минуты
}

param TESTO_WAIT_DEFAULT_TIMEOUT "2m"

...

test tmp2 {
    my_vm wait "Hello world" #таймаут по умолчанию составит 2 минуты
}

Задать служебные параметры можно один раз. Повторная попытка изменить значение по-умолчанию приведет к ошибке.

К служебным параметрам применимы все те же правила, что и к обычным параметрам. Например, можно задать значение служебного параметра с помощью аргумента командной строки (--param)

Список служебных параметров

  • TESTO_WAIT_DEFAULT_TIMEOUT - время по-умолчанию для максимального периода ожидания в команде wait.
  • TESTO_WAIT_DEFAULT_INTERVAL - интервал по-умолчанию для проверки состояния экрана в команде wait.
  • TESTO_CHECK_DEFAULT_TIMEOUT - время по-умолчанию для максимального периода ожидания положительного результата в команде check.
  • TESTO_CHECK_DEFAULT_INTERVAL - интервал по-умолчанию для проверки состояния экрана в команде check.
  • TESTO_MOUSE_MOVE_CLICK_DEFAULT_TIMEOUT - время по-умолчанию для максимального периода ожидания в командах семейства mouse (там, где применимо ожидание).
  • TESTO_PRESS_DEFAULT_INTERVAL - интервал по-умолчанию между нажатиями клавиш в команде press.
  • TESTO_TYPE_DEFAULT_INTERVAL - интервал по-умолчанию между нажатиями клавиш при наборе текста в команде type.
  • TESTO_EXEC_DEFAULT_TIMEOUT - время по-умолчанию для максимального периодна ожидания в команде exec.
  • TESTO_COPY_DEFAULT_TIMEOUT - время по-умолчанию для максимального периодна ожидания в командах copyto и copyfrom.

Обращение к параметрам

Формат обращения к параметрам

Для обращения к параметрам используется следующая конструкция:

"${VAR_REF}"

Где VAR_REF - это идентификатор с именем параметра.

Обращаться к параметру можно прямо внутри строки, не прерывая ее:

"Hello ${VAR_REF}"

В Testo-lang обращаться к параметрам можно фактически во всех строках. Это можно делать внутри строк с переносами, wait-выражения, JS-селекторах, объвлениях виртуальных ресурсов и т.д.

"""Hello
  ${VAR_REF}
"""

js """
  find_text("${Menu entry}").match_color("${foreground_colour}, "${gray}")
"""

machine my_ubuntu {
  ...
  iso: "${ISO_DIR}/ubuntu_server.iso"
}

Для экранирования сочетания символов ${ необходимо добавить еще один знак доллара в начале: $${.

Помимо самих параметров, внутри строк таким же образом можно обращаться к значениям счетчиков циклов for и к аргументам макросов в телах макросов. Формат обращения остается прежним.

Порядок разрешения значений параметров

При обращении к идентификатору внутри строки его значение вычисляется по следующему алгоритму, причем если на каком-то шаге находится значение, то алгоритм прекращается:

  1. Проверяется, является ли идентификатор счетчиком цикла for. Если это так, возвращается значение счетчика counter.
  2. Проверяется, является ли идентификатор аргументом макроса. Если это так, возвращается значение аргумента макроса.
  3. Проверяется, является ли идентификатор параметром. Если это так, возвращается значение параметра.
  4. Генерируется исключение, сообщающее о том, что разрешить значение параметра не удалось.

Вы можете проверить, объявлен ли параметр, с помощью конструкции if и выражения DEFINED:

if (DEFINED VAR_REF) {
  print "var ref is ${VAR_REF}"
} else {
  print "var ref is not defined"
}