Лучшая практика для Cypress тестов со многими утверждениями - PullRequest
3 голосов
/ 17 февраля 2020

Я пишу автоматизированные тесты с Cypress, и я столкнулся с проблемой. Давайте рассмотрим следующий пример:

Чтобы выполнить мои тесты, мне нужно войти в систему. Обратите внимание, что процесс аутентификации, а затем отображение страницы занимает около 5-6 секунд.

После загрузки страницы я хочу убедиться, что некоторые основные элементы пользовательского интерфейса присутствуют и находятся в правильное состояние, например:

  • Проверка элемента <table>, имен его столбцов и их порядка
  • Проверка фильтров таблицы / поиска и проверка того, что все они пусты
  • Обеспечение доступности пагинации , Это означает, что я могу написать один it() тест, который проверяет все это . Однако, если я это сделаю, мой тест будет огромным (например, более 100 строк)

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

    Есть мысли о том, какой метод лучше?

    • Один большой тест, потому что «та же страница без последствий»
    • Меньшие тесты для лучшей читабельности, но более продолжительного времени выполнения

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Когда вы запустите тест, в отчетах вы увидите только текст, который в описывает и it ; и если они пройдут или не пройдут.

Если у вас есть тест e2e, возможно, у вас будет более 100 строк; У меня есть вкус с 400 строками.

Самое главное, чтобы их было легко читать.

0 голосов
/ 04 марта 2020

Поскольку все эти тесты являются просто наблюдением, абсолютно без взаимодействия, они не взаимодействуют / не мешают друг другу. Это означает, что я могу написать один тест it (), который проверяет все это. Однако, если я сделаю это, мой тест будет огромным (примерно 100+ строк)

Ну, не совсем так.

Лучшей практикой является (как вы уже сказали), чтобы ваш тест был легко читаемым. Разделение (даже если это просто простые утверждения) ваши тесты на отдельные описания, описания или даже файлы в зависимости от раздела testes очень помогают. Тесты более читабельны, а результаты более ясны. Кроме того, каждый тест должен быть независимым, не только тогда, когда элементы не мешают друг другу.

Чтобы написать меньше строк кода, вы можете использовать массивы , например, для элементов таблицы:

const columns = ['name', 'surname', 'value1', 'value2'];
columns.forEach(function(column) {
  cy.contains('table', column).should('be.visible');

Я бы сделал один describe и использовал бы login() в настройках before используйте пару it s для каждого раздела, чтобы тесты были легко читаемыми.

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