2016-10-03 3 views
0

Я пишу несколько приемочных испытаний для формы пожертвования. Я использую Codeception. Ради этого примера, позволяет сказать, что форма пожертвования состоит из 3 частей:Что делать, когда приемочные испытания имеют разные варианты выбора и вы хотите проверить каждый из них.

  1. Введите ваши личные данные
  2. Введите либо кредитную карточку и прямой передачи
  3. Отправить и получить по электронной почте подтверждение

Для приемочного испытания я хотел бы протестировать весь процесс - как для кредитной карты, так и для прямой передачи. Шаги 1 и 3 по существу одинаковы между двумя процессами пожертвования, но, очевидно, вы не можете выполнить второй шаг самостоятельно (форма пожертвования не будет представлена ​​без шага 1).

Так что мне интересно, было бы «нормально» в этом случае написать два теста (например, canDonateWithCreditCard() и canDonateWithDirectTransfer()), которые проверяют все три части процесса? Хотя это частично тестирует одно и то же дважды?

Если нет, то каким будет предпочтительный способ сделать это?

ответ

1

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

Единственное предостережение, которое я хотел бы упомянуть, заключается в создании ваших тестов (я не знаю, как работает код), но посмотрите, как построить свои тесты, используя что-то в строках объектной модели страницы (http://martinfowler.com/bliki/PageObject.html), это будет означать, имеют несколько тестов, которые могут реализовывать те же самые сценарии, что каждый тест не имеет собственной реализации этих шагов.

+2

http://codeception.com/docs/06-ReusingTestCode#StepObjects – Naktibalda

1

Это зависит от вашего подхода. 1. Вы можете создать два разных тестовых примера, выполняющих действие. 2. У вас может быть логика в вашем тесте для передачи способа передачи в качестве аргумента метода и выполнения действий соответственно. Идеально использовать объектную модель страницы для инкапсуляции всех действий в каждый класс страниц, а также для избежания избыточности. Если и кредитная карта, и действия прямой передачи перейдут на новую страницу, создайте новый объект страницы в соответствии с переданным аргументом и вызовите метод для выполнения действия переноса. Простой класс объектов страницы может быть создан следующим образом: http://testautomationlove.blogspot.in/2016/02/page-object-design-pattern.html

Смежные вопросы