Данные о огурцах - PullRequest
       2

Данные о огурцах

0 голосов
/ 01 мая 2018

Как лучше всего заполнить веб-форму, содержащую более 20 полей? Могу ли я использовать комбинацию таблицы данных и схемы сценария, чтобы избежать написания шагов для каждого поля в форме?

Я написал что-то вроде этого .. Но не знаете, как реализовать определение шага для этого? Кто-нибудь, пожалуйста, помогите ..

        Scenario Outline: Test successful registration of a new user
        Then I enter email address of new user as "<customerEmail>"
        And I click on CreateAccount button
       Then I enter my personal informations

      | Title | CustomerFirstName | CustomerLastName | Email | Password | DOB |
      | <title> | <cFname> | <cLname> | <email> | <pwd> | <dob> |

        And I enter my address informations
       | FirstName | LastName | Company | Address | AddressLine2 | City | State 
       | ZipCode | Country |
       | <fname> | <lname> | <company> | <addr1> | <addr2> | <city> | <state> | 
       <zip> | <country> |

       And I enter additional informations
       | AdditionalInformation | HomePhone | MobilePhone | AlternateAddress |
       | <remarks> | <homephone> | <mobile> | <addr3> |

       When I click on Register button
       Then I redirected to order summary page

      Examples:
     | customerEmail | <title> | <cFname> | <cLname> | <email> | <pwd> | <dob> | 
    <fname> | <lname> | <company> | <addr1> | <addr2> | <city> | <state> | <zip> 
    | <country> | <remarks> | <homephone> | <mobile> | <addr3> |
   | abc@gmail.com | f | g | f | t | y | y | y | y | y | y | y | h | d | e | e | 
   r | b | w | u |

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Дайте вашей коллекции данных имя. Допустим, это налоговая форма. Вместо того, чтобы позволить вашим функциям определять, КАК эта форма заполнена, просто поговорите о КОГДА форма заполнена и позвольте приведенному ниже коду иметь дело с деталями

Таким образом, вы бы сделали шаг

When I fill in my tax form

и реализовать его как

When "I fill in my tax form" do
  fill_in_tax_form
end

и теперь создайте вспомогательный метод для заполнения налога с

module TaxFormStepHelper
  def fill_in_form
  end
end

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

  def fill_in_electric_meter_details
    fill_in_common_meter_details
    # 'debt_clearance_meter_serial_number' is  prepopulated from property
    fill_in 'debt_clearance_screen_a', with: 'a'
    fill_in 'debt_clearance_screen_b', with: 'b'
    fill_in 'debt_clearance_screen_f', with: 'f'
    fill_in 'debt_clearance_screen_g', with: 'g'
  end

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

Если вы хотите иметь дело с грустными путями, вы можете сделать что-то вроде

When I fill in my tax form 
And my employment status is not correct 
Then ...

When заполняет форму как обычно And перезаписывает статус занятости, поэтому его неверно

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

Надеюсь, это пригодится вам:)

0 голосов
/ 01 мая 2018

Кажется, больше подходит сценарий, чем сценарий. Укороченная версия сценария, чем вы использовали. Заголовки в таблице exaples имеют «<>», которые не обязательны.


Файл функции

    Scenario Outline: Test successful registration of a new user
       Then I enter email address of new user as "<customerEmail>"
       Then I enter my personal informations
         | title | customerFirstName | customerLastName |
         | <title> | <cFname> | <cLname> |
       And I enter my address informations
         | firstName | lastName | company |
         | <fname> | <lname> | <company> |

     Examples:
        | customerEmail | title | cFname | cLname | fname | lname | company |
        | abc@gmail.com | f | g | f | e | r | b |

StepDefinition -

public class FormSteps {

    private User user = new User();

    @Then("^I enter email address of new user as \"([^\"]*)\"$")
    public void iEnterEmailAddressOfNewUserAs(String email) {
        //Input details to webpage and store for later use
        user.setEmail(email);
    }

    @Then("^I enter my personal informations$")
    public void iEnterMyPersonalInformations(List<User.UserPersonal> userPers) {
        //Input details to webpage and store for later use
        user.setPersonalDetails(userPers.get(0));
        System.out.println(user);
    }

    @Then("^I enter my address informations$")
    public void iEnterMyAddressInformations(List<User.UserAddress> userAddr) {
        //Input details to webpage and store for later use
        user.setAddressDetails(userAddr.get(0));
        System.out.println(user);
    }
}

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

public class User {

    private UserPersonal personal = new UserPersonal();
    private UserAddress address = new UserAddress();

    private String email;

    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public UserPersonal getPersonalDetails() {
        return personal;
    }
    public void setPersonalDetails(User.UserPersonal personal) {
        this.personal = personal;
    }
    public UserAddress getAddressDetails() {
        return address;
    }

    public void setAddressDetails(UserAddress address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User [personal=" + personal + ", address=" + address
                + ", email=" + email + "]";
    }

    public class UserPersonal {
        private String title;
        private String customerFirstName;
        private String customerLastName;

        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public String getCustomerFirstName() {
            return customerFirstName;
        }
        public void setCustomerFirstName(String customerFirstName) {
            this.customerFirstName = customerFirstName;
        }
        public String getCustomerLastName() {
            return customerLastName;
        }
        public void setCustomerLastName(String customerLastName) {
            this.customerLastName = customerLastName;
        }
        @Override
        public String toString() {
            return "UserPersonal [title=" + title + ", customerFirstName="
                    + customerFirstName + ", customerLastName="
                    + customerLastName + "]";
        }               
    }

    public class UserAddress {
        private String firstName;
        private String lastName;
        private String company;
        public String getFirstName() {
            return firstName;
        }
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
        public String getCompany() {
            return company;
        }
        public void setCompany(String company) {
            this.company = company;
        }
        @Override
        public String toString() {
            return "UserAddress [firstName=" + firstName + ", lastName="
                    + lastName + ", company=" + company + "]";
        }   
    }
}

Это можно легко переключить на сценарий. Все как определение шага и т. Д. Остаются прежними.

Scenario: Test successful registration of a new user
       Then I enter email address of new user as "abc@gmail.com"
       Then I enter my personal informations
         | title | customerFirstName | customerLastName |
         | f | g | f |
       And I enter my address informations
         | firstName | lastName | company |
         | e | r | b |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...