Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Использование Codeception 2.2.3 + Gherkin


(s.alex) #1

Ребят, кто работал со структурой Codeception 2.2.3 + Gherkin. У меня возник вопрос по разработке BDD (Gherkin)
По примеру BDD я создал фичу.

Вот мой пример login.feature

Feature: login
In order to login
As a enter login and password
I need to navigate home page

Scenario: successfully login
Given I click Sign in on the home page
When I enter “login” and “password”
And I click on the button Login
Then I should see My Dashboard

Далее в AcceptanceTester я создал такую структуру

<?php

class AcceptanceTester extends \Codeception\Actor
{
use _generated\AcceptanceTesterActions;

/**
 * @Given I click Sign in on the home page
 */
public function IClickOnSignInOnTheHomePage()
{
    $this->amOnPage('/');
    $this->click('Sign in', '.fright');
}
/**
 * @When I enter :arg1 and :arg2
 */
public function iEnterAnd($arg1, $arg2)
{
    $this->fillField('#email',$arg1);
    $this->fillField('#pass',$arg2);
}
/**
 * @When I click on the button Login
 */
public function iClickOnTheButtonLogin()
{
    $this->click('#send2');
}
/**
 * @Then I should see My Dashboard
 */
public function iShouldSeeMyDashboard()
{
  $this->waitForElement('.dashboard');
  $this->see('My Dashboard','.page-title');
} 

Следующим шагом запускаю эту фичу командой

codecept run acceptance --steps --debug login.feature

И вот консоль где отображается человеческий сценарий

В целом работает. Однако мне интересно возможно ли оптимизировать, создав Cest класс и в дальнейшем запускать по группам? Так как в одном классе AcceptanceTester если будут находится куча тестов это очень проблематично


(Michael Bodnarchuk) #2

Приет, смотря что ты имеешь ввиду под “группами”, ибо я пока не совсем улавливаю.
Можно разделять контексты. Например, самые основеные методы записать в AcceptanceTester, остальные в PageObject.

http://codeception.com/docs/07-BDD#Configuration

Т.е. мы регистрируем классы в gherkin: contexts: default, методы этих классов с аннотациями Given/When/Then будут рассматриваться как шаги для геркин-сценария.

Итого, всё можно рездлить, внедрить туда PageObject, StepObject и т.п.