Триггеры

Исходный код на языке python находящийся в тестовых файлах будет выполнен при загрузки теста, после чего будут запущены сами тесты. Но часто возникает потребность выполнить тот иди иной код во время выполнения тест, для этих целей был создан механизм триггеров.

Триггер представляет собой производный класс от класса BaseTrigger в котором можно переопределить методы вызываемые в определённые моменты прохождения теста:

Метод Аргументы Описание
setup_test browser, test_id, test_scope, test_args Срабатывает перед запуском теста.
teardown_test browser, test_id, test_scope, test_args Срабатывает после окончания работы теста.
setup_step browser, step_id, test_scope, step_args Срабатывает перед переходом на новый шаг теста.
teardown_step browser, step_id, test_scope, step_args Срабатывает после окончания работы шага теста.
setup_script browser, script_id, test_scope, script_args Срабатывает перед выполнением объекта SCRIPT.
teardown_script browser, script_id, test_scope, script_args Срабатывает после выполнения объекта SCRIPT.
close Срабатывает после окончания работы набора тестов.

В момент вызова методам могут быть переданы следующие аргументы:

Aргумент Тип Описание
browser Browser Специальный объект реализующий высокоуровневую обёртку над WebDriver
test_id str Идентификатор текущего теста
step_id str Идентификатор текущего шага
script_id [str] Список идентификаторов последовательно запускаемых сценариев
test_scope SCOPE Ссылка на пространство имён теста
test_args dict Словарь аргументов теста
step_args dict Словарь аргументов шага
script_args dict Словарь аргументов передаваемых сценарию

Для того что бы задействовать триггер нужно передать строку с названием класса триггера в переменную среды TRIGGER. Для каждого теста возможно определить свой уникальный триггер передав его идентификатор в аргумент теста trigger.

Пример:

from dsl import *
from trigger import BaseTrigger

class AuthTrigger(BaseTrigger):
    """
    Авторизация на сайте при помощи cookies
    """
    def __init__(self):
        """
        Конструктор вызывается перед выполнением набора тестов
        """
        self._cookies = {
            "name": "user", "value": "234d36e1de92e831d66bd788e1974bc0"
        }
    
    def setup_test(self, browser, test_id, test_scope, test_args):
        """
        Перед выполнением теста переходим на страницу BASE_URL, очищаем cookies и       
        устанавливаем cookies определённые в конструкторе
        """
        browser.get_url(CONFIG.BASE_URL)
        browser.del_cookies()
        browser.set_cookies(self._cookies)

# "подключаем" триггер
CONFIG.TRIGGER = "AuthTrigger"