Передача параметра в "Примеры:" таблицы "Схема сценария:" в файле объектов
Здесь, как вы можете видеть, я пытаюсь получить значение из .yml
файл находится в config/environments
в Examples:
Таблица.
Но вместо получения он отправляет значение как есть?
Можно ли передать параметр, как это? Если да, то как?
Если нет, какая особенность / концепция Ruby или Cucumber не позволяет пользователю сделать это и почему?
Feature: Verify login of all test users
I want to verify all test users can login.
Scenario Outline: Login as different users on the website
Given I am on login page
When I enter "<username>" and password
Then I click Login button
And I see "<user>" successfully logged in
Examples:
|user|username|
|testuser1|#{FigNewton.test1_email}|
|testuser2|FigNewton.test2_email|
3 ответа
Ответ на query1: Вы можете параметризовать через Examples:
таблица, но не передавая значение напрямую FigNewton gem
потому что это .feature
файл не рубин .rb
файл.
Ответ на query2: Как вы это делаете: параметризовать и зацикливать его на имени пользователя и на вас steps definition
упомянуть, что делать, когда определенное имя пользователя найдено. Этим вы можете легко параметризовать.
Примеры:
|user|username| |testuser1|test1| |testuser2|test2|
Определение шага
When(/^I enter "([^"]*)" and password$/) do |username| case username when 'test1' on(LoginPage).user_email = FigNewton.test1_email when 'test' on(LoginPage).user_email = FigNewton.test2_email end .... .... end
Прежде всего, это довольно плохая особенность, лучше было бы
Scenario: Test Users can login
Given there are some test users
When the test users login
Then all test users should be logged in
или что-то типа того. Функции для определения того, что вы хотите сделать и почему, а не как вы делаете вещи.
Если вы делаете выше, тогда все программирование будет выполнено в определениях шагов. Это позволит вам делать все, что вы хотите.
Вы можете реализовать это довольно легко, например,
Given 'there are some test users' do
@test_users = create_test_users
end
When 'the test users login' do
@login_results = login_each(@test_users)
end
Then 'all test users should be logged in' do
expect(check_for_errors(@login_results).count).to eql 0
end
then implement the methods you need in a step helper e.g
module TestUsersLoginStepHelper
def create_test_users
...
def login_each(users)
users.each do
...
...
end
World TestUsersLoginStepHelper
Поместив всю работу в определения шагов, вы значительно облегчите себе жизнь, поскольку вы можете использовать всю мощь рубина, чтобы делать то, что вам нужно
Вы можете использовать этот сценарий DDD в проекте всякий раз, когда это необходимо - благодаря этому нам не нужно создавать несколько тестовых случаев, он будет извлекать значение данных из примера схемы.
Файл функции: контрольный пример
Схема сценария: Вход в приложение
Когда я ввожу "имя пользователя>" и "пароль>"
Затем я нажимаю кнопку входа
И я вижу, что пользователь успешно вошел в систему
Примеры:
| Имя пользователя | пароль |
| Abc@gmail.com| test1234!|
| Abc@yahoo.com| test1234!|
Определение шага:
Когда (/^ я ввожу "([^"]) "и" ([^ "])" $/) do | имя пользователя, пароль |
спать 20
on (Логин).email_edit_text_element.send_keys имя пользователя on (Логин).password_edit_text_element.send_keys пароль
конец
Затем (/^ Я нажимаю кнопку входа $/) сделать сон 20
на (Вход).login_button_element.click
конец
Затем (/^ Я вижу, что пользователь успешно вошел в $/) сделать
ожидать (on (логин).account_bg_cover_element.displayed?).to be_truthy
ставитконец успешной регистрации
В файле ruby вы создали методы, которые вы вызываете в определении шага. Это будет работать. убедитесь, что имя параметра вы передаете.