Как использовать сценарий в качестве предпосылки другого сценария - PullRequest
2 голосов
/ 02 марта 2020

первый файл функции

Feature: CRMSmokeTest
    In order to make sure that CRM Key functionalities working as expected.
Background:     
    Given I have entered the CRM URL

Scenario Outline:Quick Search using AccountID
    Given AccountID is selected in The Quick Search
    When user enter the <AccountID> in search field
    And Click on Quick Search button
    And Close the Alerts
    Then Title of the page contains <AccountID>
    Examples:
    | AccountID |
    | 116999    |

Второй файл функции

Feature: CRM Ticket Open, Add and Amend
    In order to verify thay user able to open and amend existing ticket
    Also to verify that user is able to create a new Ticket
Background: 
Given I have entered the CRM URL
And AccountID is selected in The Quick Search
@mytag
Scenario Outline: Add a new Ticket
    When user enter the <AccountID> in search field
    And  Click on Quick Search button
    And  Close the Alerts
    Then Title of the page contains <AccountID>
    When User click on Add New link on Ticket Section
    And Select the <Departmnet> and <SubTeam> from the list
    And Enter the <Subject> of the ticket
    And Select the <Product>
    And Select the <TicketCategory> and <TicketSubCategory>
    And Enter the <Comments> and <PersonSpokeTo>
    And Click on Finish
    Then A new Ticket is created
Examples: 
| AccountID | Department        | SubTeam         | Subject     | Product        | TicketCategory     | TicketSubCategory | Comments      |
| 116999    | Customer Services | ContractEnquiry | Test Ticket | Home Insurance | Account Management | Customer Zone     | Test Comments |

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

  1. Каков наилучший способ для этого

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

1 Ответ

2 голосов
/ 02 марта 2020

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

Вместо копирования и вставки шагов из первого сценария напишите короткий шаг Given, который выполняет те же действия, что и первый сценарий.

Судя по названию сценария, создайте шаг Given, похожий на:

Scenario Outline: Add a new Ticket
    # New 'Given' step that basically does the same thing as scenario #1
    Given user performed a quick search for account <AccountID>

    # Now continue on with the rest of the scenario
    When User click on Add New link on Ticket Section
    And Select the <Departmnet> and <SubTeam> from the list
    And Enter the <Subject> of the ticket
    And Select the <Product>
    And Select the <TicketCategory> and <TicketSubCategory>
    And Enter the <Comments> and <PersonSpokeTo>
    And Click on Finish
    Then A new Ticket is created

Examples: 
    | AccountID | Department        | SubTeam         | Subject     | Product        | TicketCategory     | TicketSubCategory | Comments      |
    | 116999    | Customer Services | ContractEnquiry | Test Ticket | Home Insurance | Account Management | Customer Zone     | Test Comments |

Реализация этого шага будет зависеть от архитектуры ваших тестов, но этот шаг должен:

  1. Go на URL-адрес CRM
  2. Выберите AccountId в быстром поиске
  3. Введите указанный идентификатор аккаунта в поле поиска
  4. Нажмите кнопку быстрого поиска
  5. Закройте оповещения при появлении

Если вы обнаружите, что пишете код, который, кажется, существует в других ваших шагах, рассмотрите возможность рефакторинга вашего кода в Модели страниц , а затем инициализируйте эти модели страниц и вызов методов на них из ваших определений шагов. Базовый c контроль потока вашего теста будет go:

Feature file --> Step definition --> Page model --> Selenium --> Web browser
...