Страницы

Поиск по вопросам

вторник, 19 марта 2019 г.

Как реализовать step definition для calabash тестового сценария для CreditCard.apk под Android?

Всем доброго дня! Написал приложение под Android (прототип указан ниже по ссылке).
Изучил все тулы / мануалы по составлению calabash тестового сценария, также прочитал книгу "The Cucumber book". Не понимаю одного, например хотя бы, как реализовать step defenitions на ruby, чтобы сделать первоначальный ввод номера кредитной карты. Допустим, я могу написать в шаге сценария номер карты,
Background: Given I press "CreditCardEntryDemo" And I press "form_with_zip"
Scenario: Credit card number identity When I enter "4242 4242 4242 4242" into field with id "form_with_zip" And I check of the corrrect number of digits for the credit card Then the form should be redisplayed with CVV and MM/YY And the form should be activate a button called "Prev"
и дальше в step defenition написать регулярное выражение по этому номеру, после чего сделать вызов query("*") для просмотра идентификатора объектов в моем apk. Вопросы:1) Как связать идентификатор моего поля CustomView c данными, которые пользователь вводит в номере карты? После запуска тестового сценария и получения подсказки, как можно реализовать шаги в сценарии
When(/^I enter "([^"]*)" into field with id "([^"]*)"$/) do |arg1, arg2| pending # Write code here that turns the phrase above into concrete actions end
When(/^I check of the corrrect number of digits for the credit card$/) do pending # Write code here that turns the phrase above into concrete actions end
Then(/^the form should be redisplayed with CVV and MM\/YY$/) do pending # Write code here that turns the phrase above into concrete actions end
Then(/^the form should be activate a button called "([^"]*)"$/) do |arg1| pending # Write code here that turns the phrase above into concrete actions end
хотелось бы написать реализацию данных подсказок, например как что то в этом роде:
#Ввод номера карты в соответствии заданными регулярными выражениями When(/^I enter "(^4[0-9]{15}?+^5[1-5][0-9]{14}$+^3[47][0-9]{13}$+^6(?:011|5[0-9]{2})[0-9]{12}$+)" into field with id "([^"]*)"$/) do |number, idField| # TODO something end
#Проверку правильности набранного номера, думаю, можно опустить из-за #регулярных выражений предыдущего шага. НО надо еще как то вернуть #сами данные в поле CustomView с id form_with_zip. When(/^I check of the corrrect number of digits for the credit card$/) do pending # Write code here that turns the phrase above into concrete actions end
#После ввода номера карты, должно появиться в этом поле CustomView невидимый #CVV и MM/YY Then(/^the form should be redisplayed with CVV and MM\/YY$/) do pending # Write code here that turns the phrase above into concrete actions end
#Должна стать активной кнопка "Prev" Then(/^the form should be activate a button called "([^"]*)"$/) do |arg1| pending # Write code here that turns the phrase above into concrete actions end
2) Как сделать абстрактный ввод данных в тесте сценария, если это возможно?То есть в тестовом сценарии (см. выше) написан номер карты "4242 4242 4242 4242". Можно ли проверить правильность работы приложения на ввод других каких - то номеров без собственноручного ввода? 3) И как вернуть данные номера в поле CustomView, куда в приложении пользователь вводит данные его банковской карты? Выше в комментариях подсказок step definitions уже упоминалось про возврат правильно набранного номера банковской карты в поле CustomView с id form_with_zip (описание этого объекта представлено выше). Так как же это сделать? :) 4) Чуть не забыл, как в реализацию step definitions добавить проверку на смену картинок в поле ввода? При правильном наборе номера карты, в этом поле ввода должна смениться картинка неопределенной карты на картинку карты, которая соответствует своему регулярному выражению. Например, номер "4242 4242 4242 4242" - это Visa, то есть первая картинка сменится на картинку карты Visa. Ссылка на прототип приложения:http://www.lukew.com/ff/entry.asp?1667


Ответ

Если всегда один и тот же номер:
When(/^I enter credit card number$/) do touch("* id:'input_id'") #id элемента wait_for_keyboard keyboard_enter_text('1234') # любой номер (будет захардкожен) hide_soft_keyboard end
Если номер меняется, можно задать переменную:
When(/^I enter credit card number$/) do @code='1234' touch("* id:'input_id'") #id элемента wait_for_keyboard keyboard_enter_text(@code) #переменная code hide_soft_keyboard end
Если хотите прописать в фиче номер:
В фиче будет выглядеть так:
When I enter credit card number '1234'
When(/^I enter credit card number "([^"]*)"$/) do |number| touch("* id:'input_id'") #id элемента wait_for_keyboard keyboard_enter_text(number) hide_soft_keyboard end

Комментариев нет:

Отправить комментарий