Ниже приведены предыдущие сообщения в этой серии:
- Создать и запустить первый образец
- Огурец Функция Файловый синтаксис и редактирование
- Представляя теги, сценарий, сценарийные очертания, фон
В последнем посте мы объяснили различия между различными типами сценариев, которые могут быть использованы при заполнении файла функций. Сегодня мы введем исполнение часть огурца.
Содержание
- Крючки введение
- Пользовательские крючки
- «Пропустить» настройки запуска
- Введение тайм-аута
- Тайм-аут
- Отключить тайм-аут
Крючки введение
Крючки (крючки) используются для добавления операций до и после каждого сценария. Например, в тесте веб-автоматизации до прогонов сценариев можно открывать окно браузера и также может быть максимизировано. После запуска сценария мы можем сделать скриншот веб-страницы. Мы можем определить все эти действия в крючках.
В огурце 4 вида крючков:
- Beforalll.
- Перед
- После
- После всего
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. Создать и запустить первый образец