Рубрики
Без рубрики

BDD Web Automation 04: крючки и тайм-аут

Мы ввели выполнение часть огурца, включая крючки, фильтрацию сценариев, тайм-аут и т. Д.

Автор оригинала: CukeTest.

Ниже приведены предыдущие сообщения в этой серии:

  1. Создать и запустить первый образец
  2. Огурец Функция Файловый синтаксис и редактирование
  3. Представляя теги, сценарий, сценарийные очертания, фон

В последнем посте мы объяснили различия между различными типами сценариев, которые могут быть использованы при заполнении файла функций. Сегодня мы введем исполнение часть огурца.

Содержание

  1. Крючки введение
  2. Пользовательские крючки
  3. «Пропустить» настройки запуска
  4. Введение тайм-аута
  5. Тайм-аут
  6. Отключить тайм-аут

Крючки введение

Крючки (крючки) используются для добавления операций до и после каждого сценария. Например, в тесте веб-автоматизации до прогонов сценариев можно открывать окно браузера и также может быть максимизировано. После запуска сценария мы можем сделать скриншот веб-страницы. Мы можем определить все эти действия в крючках.

В огурце 4 вида крючков:

  1. Beforalll.
  2. Перед
  3. После
  4. После всего

Beforalll.

Выполните операции перед любым сценарием, таким как открытие браузера и максимизация окна. Каждая функция BeForalL будет выполнена только один раз.

const {BeforeAll} = require('cucumber');

BeforeAll(async function(){
    await driver.manage().window().maximize();
})

Перед

Перед каждым сценарием запускается, например, очистка файла cookie браузера перед выполнением операций

const {Before} = require('cucumber');

Before(async function () {
    await driver.manage().deleteAllCookies();
})

После

Операции после запуска каждого сценария, например, с помощью скриншота после выполнения операции

const {After} = require('cucumber');

After(async function () {
    //After Scenario Hook

    //capture screenshot after each scenario
    let screenshot = await driver.takeScreenshot();
    this.attach(screenshot, 'image/png');
});

После всего

После того, как все сценарии были запущены, например, закрытие экземпляра браузера после запуска.

const {AfterAll} = require('cucumber')

AfterAll(function () {
    //perform some shared teardown
    return driver.quit();
})

Пользовательские крючки

Функция крюка может устанавливать теги, чтобы применить, поэтому применить к набору сценариев, которые соответствуют Тег выражение Отказ Ниже показан пример:

var {After, Before} = require('cucumber');

Before(function () {
  // This hook will be executed before all scenarios
});

Before({tags: "@foo"}, function () {
  // This hook will be executed before scenarios tagged with @foo
});

Before({tags: "@foo and @bar"}, function () {
  // This hook will be executed before scenarios tagged with @foo and @bar
});

Before({tags: "@foo or @bar"}, function () {
  // This hook will be executed before scenarios tagged with @foo or @bar
});

// You can use the following shorthand when only specifying tags
Before("@foo", function () {
  // This hook will be executed before scenarios tagged with @foo
});

В последнем посте мы говорили о том, как использовать выражения тегов в сценариях фильтра для запуска, здесь крючки – это другое место, которое можно использовать, которое можно использовать выражения тегов.

«Пропустить» настройки запуска

Если некоторые сценарии должны быть пропущены, просто верните «пропущенные» в крючках. Использование выглядит следующим образом:

Before("@foo", function() {
  // perform some runtime check to decide whether to skip the proceeding scenario
  return 'skipped';
});

Введение тайм-аута

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

Тем не менее, есть случаи, что шаг может занять более 5 секунд, чтобы выполнить, и вы не хотите, чтобы огурец сообщить об ошибке при запуске. Затем вы можете изменить глобальное время ожидания по умолчанию, вызывая метод SetDefaultTimeout.

const {setDefaultTimeout} = require('cucumber');

setDefaultTimeout(60 * 1000);

Тайм-аут

Если вы измените время ожидания по умолчанию, это повлияет на все крючки и функции шага. Если вы хотите применить его только к определенной функции крюка или шага, вы можете определить тайм-аут для некоторых крючков или функций по шагам.

const {Before, Given} = require('cucumber');

Before({timeout: 60 * 1000}, function() {
  // Does some slow browser/filesystem/network actions
});

Given(/^a slow step$/, {timeout: 60 * 1000}, function() {
  // Does some slow browser/filesystem/network actions
});

Отключить тайм-аут

При нормальных обстоятельствах не рекомендуется для всех, чтобы использовать

В некоторых специальных сценариях вам может потребоваться отключить период ожидания времени или ждать неопределенно для выполнения для выполнения. Это можно сделать, установив {Timeout: -1} Отказ

const {Before, Given} = require('cucumber');
const Promise = require('bluebird');

Given('the operation completes within {n} minutes', {timeout: -1}, function(minutes) {
  const milliseconds = (minutes + 1) * 60 * 1000
  const message = `operation did not complete within ${minutes} minutes`
  return Promise(this.verifyOperationComplete()).timeout(milliseconds, message);
});

Для получения дополнительной информации о крючке, прочитайте Крючки в документе Cucumber.js.

Предыдущий пост: 03. Внедрение тегов, сценарий, сценарийные очертания, фон Следующий пост: 05. Создание сценариев автоматизации привода данных с помощью DOC String & Data Table Первый пост: 01. Создать и запустить первый образец