Корнишон для CYPRESS — как отформатировать корнишон для длинных тестовых примеров с несколькими точками проверки на протяжении всего теста

#cypress #gherkin #reusability #scenarios

#cypress #корнишон #возможность повторного использования #сценарии

Вопрос:

Я понимаю, что в рамках этой структуры пользователи не могут вызывать сценарии внутри сценариев. Я пытаюсь создать сквозные тестовые примеры, в которых есть точки проверки на нескольких этапах теста.

Используя «плохой» синтаксис корнишона, процесс для сценария будет выглядеть примерно так:

Данный элемент A существует

Когда пользователь обрабатывает элемент

Затем отображается предупреждение

Когда пользователь обращается к элементу

Затем предупреждение не отображается

Когда пользователь завершает работу с элементом

Затем статус элемента = «ТЕКУЩИЙ»

И статус записи = «ЗАВЕРШЕНО»

Первое, что я рассмотрел, это разбить сценарий на 3 отдельных сценария GWT.

Это нормально.

Однако предположим, что теперь я хочу создать новый сквозной сценарий, который может повторно использовать один из 3 созданных сценариев (как если бы вы повторно использовали функцию).

Как мне это сделать без дублирования кода Gherkin?

Я не могу использовать Background, поскольку разделы, которые мне требуются для повторного использования, находятся в середине выполнения. Шаги до и после могут отличаться.

ВКРАТЦЕ: я пытаюсь повторно использовать сценарий GWT, который является общим для многих сквозных сценариев, где сквозные сценарии по своей сути разные.

Мы будем признательны за любую обратную связь или помощь, которую вы можете предоставить.

Приветствия и спасибо,

Ответ №1:

Думаю, я понимаю, что вы имеете в виду. Я выполнил несколько «мета» сценариев. Например, есть те, которые проверяют вход в систему, сохранение деталей и создание учетной записи, которые являются очень мелкозернистыми. Затем у меня есть сценарии, которые тестируют вещи дальше по пути, предполагая, что счастливый путь был пройден до этого момента. Итак, представьте, что scebnario называется:

 The user is logged in and has successfully created an account and is at the add product screen
  

Для этого в определении шага я бы просто объединил вызовы функций с жестко заданными значениями:

 @When("^The user is logged in and has successfully created an account and is at the add product screen$")
    def addProducts(String val) {
        navLibrary.loginAsUser("user", "password")
        navLibrary.createAccount("some", "params", "you", "need")
        navLibrary.navToProducts("some param")
    }
  

А затем начните с более мелких деталей в новых отдельных шагах. Вы должны продумать дизайн системы и каскадирование. Для меня это означало много начальных переделок, поскольку тесты начали расти, но теперь это легко. Выберите правильный уровень возможности повторного использования. Это тестовый код, поэтому ему не обязательно полностью соответствовать всем правилам программирования. Он должен работать и в долгосрочной перспективе не требует обслуживания.
Однако я не использовал Cypress. Мои тесты в Groovy с Selenium и Cucumber.