Как написать тесты с несколькими шагами в огурце

Если у вас есть простая форма, вы вводите свое имя, пол и сохраняете ее. При выборе раскрывающегося списка "Пол" будет отображаться [Мужской | Женский].

Таким образом, при написании тестовых сценариев для вышеперечисленного, типичным способом является написание его по шагам.

Precondition : User Loged in and Form Opened

Steps                                | Expected Result
------------------------------------------------------------------------
1 : User Enters the name             | Entered name should be there         
2 : User Clicks on Gender Drop-down  | Male and Female should be listed
3 : Users Selects a Gender           | Selected Gender should be there
4 : Clicks on Save                   | Information get saved.   

Ниже приводится один из способов представить это огурец.

Given User Loged in and Form Opened
When User Enters the name
Then Entered name should be there         
When User Clicks on Gender Drop-down
Then Male and Female should be listed
When Users Selects a Gender
Then Selected Gender should be there
When Clicks on Save 
Then Information get saved. 

Теперь, как мы можем представить это в огурце? Пока я читаю, вы не должны иметь несколько действий в одном и том же сценарии. Если вы добавите несколько тестовых случаев для каждого шага выше, тестовые случаи будут расти в геометрической прогрессии. Каков наилучший способ справиться с этим?

3 ответа

Решение

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

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

Вот моя попытка переформулировать:

Scenario: Gender Dropdown values
Given a user is logged in
When the user clicks the Gender dropdown
Then Male and Female options are displayed

@EndtoEnd
Scenario Outline: Saving User information
Given a user is logged in
When the user enters a <Name> and selects a <Gender>
And Clicks on Save
Then the information gets saved

Examples:
|Name|Gender|
|Keith|Male|
|Jenn|Female|
||Female| # Negative
|Rob||    # Negative

Кроме того, вы также можете подумать о добавлении некоторых негативных тестовых сценариев.

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

Scenario Outline: User enters details and stores
Given User Loged in and Form Opened
When User Enters the <Name>        
And Users Enters the <Gender>
And Clicks on Save 
Then Information get saved. 
Then I Go back (In case view info)
Then I assert for <Name>
Then I assert for <Gender>

Examples:
|Name| |Gender|
|x|     |Male|
|y|     |female|

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

Ваш сценарий и вопрос даже не говорят нам, что вы пытаетесь сделать, поэтому мне просто нужно что-то придумать. Допустим, вы пытаетесь добавить друга

Feature: Adding a friend

  Scenario: Add Alison
    Given I am logged in
    When I add Alison to my friends
    Then I should see Alison is my friend

и это в значительной степени это. Обратите внимание, что ни одна из деталей о том, как вы добавляете друга, не записана в сценарии, это не то, для чего нужен Cucumber.

Теперь с технической стороны давайте рассмотрим, как мы получаем этот сценарий, чтобы фактически добавить друга. Прежде всего определение шага

When 'I add Alison to my friends' do
  add_a_friend name: 'Alison' # perhaps add a gender param here
end

Обратите внимание, что даже определение шага не знает, как заполнить форму.

Наконец, вспомогательный метод для выполнения этой работы (в Ruby это сделано более понятно)

module FriendStepHelper
  def add_a_friend(name:)
    # here is where we fill in the form and choose the gender
  end
end
World FriendStepHelper # makes add_a_friend visible to step def

Технически, так вы представляете свою проблему в Cucumber, вы пишете, ПОЧЕМУ вы делаете что-то, используя свои сценарии, и вы нажимаете, КАК вы делаете вещи для вспомогательных методов, используемых вашими определениями шагов.

Другие вопросы по тегам