Как структурировать сквозные тесты в Selenium, особенно при ожидании изменений состояния? - PullRequest
0 голосов
/ 05 августа 2020

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

Вот пример одного из моих тестовых случаев:

def test_ad_creation_registered(self):
    input = Inputs.AdCreationRegisteredInput()

    self._login()
    self.driver.get(input.URL[0])
    self._test_ad_creation(input)

    # check ad is created correctly
    self.driver.get(input.ad_url)
    self._check_against_model(AdCreation.AdPageModel(input))

    # test send message
    self._test_send_messages_user(input)

Как видите, нет даже assert здесь! Ни в функциях, ни на один уровень ниже, таких как _login, _test_ad_creation, _test_send_messages_user, каждая из которых состоит из нескольких дополнительных функций. Например, вот _test_ad_creation:

def _test_ad_creation(self, input):
    self._test_category_selection_page(input)
    self._test_ad_creation_page(input)
    self._test_ad_preview_page(input)
    self._test_ad_published_page(input)
    self._test_ad_features_edited_page(input)
    self._test_payment_page(input)

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

Каковы лучшие практики для запуска таких тестов с Selenium?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...