← Назад ко всем вопросам

Сколько проверок (assertions) допустимо в одном тесте?

1️⃣ Как кратко ответить

Количество проверок (assertions) в одном тесте зависит от контекста и цели теста. В идеале, один тест должен проверять одну конкретную функциональность или аспект, чтобы облегчить отладку и поддержание тестов. Однако в некоторых случаях допустимо использовать несколько проверок, если они логически связаны и проверяют один сценарий.

2️⃣ Подробное объяснение темы

Тестирование программного обеспечения — это процесс проверки того, что программа работает так, как ожидается. В автоматизированном тестировании часто используются утверждения (assertions) для проверки различных условий. Утверждение — это выражение, которое проверяет, соответствует ли фактический результат ожидаемому.

Зачем ограничивать количество проверок в тесте?

  1. Читаемость и поддерживаемость: Тесты с одной проверкой легче читать и понимать. Если тест не проходит, сразу понятно, какая именно функциональность не работает. Это упрощает отладку и исправление ошибок.

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

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

Когда допустимо использовать несколько проверок?

Иногда использование нескольких проверок в одном тесте оправдано. Это может быть уместно, если:

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

  • Оптимизация времени выполнения тестов: В некоторых случаях выполнение нескольких проверок в одном тесте может быть быстрее, чем запуск нескольких отдельных тестов, особенно если подготовка данных или начальная настройка занимает много времени.

Пример кода

Рассмотрим пример теста на языке Python с использованием библиотеки unittest:

import unittest
​
class TestMathOperations(unittest.TestCase):
​
    def test_addition(self):
        # Проверка сложения положительных чисел
        self.assertEqual(1 + 1, 2)
​
        # Проверка сложения отрицательных чисел
        self.assertEqual(-1 + (-1), -2)
​
        # Проверка сложения положительного и отрицательного числа
        self.assertEqual(1 + (-1), 0)
​
if __name__ == '__main__':
    unittest.main()
  • import unittest: Импортируем модуль unittest, который предоставляет инструменты для написания и выполнения тестов.
  • class TestMathOperations(unittest.TestCase): Определяем класс тестов, который наследуется от unittest.TestCase.
  • def test_addition(self): Определяем метод теста, который будет проверять операции сложения.
  • self.assertEqual(1 + 1, 2): Проверяем, что сумма 1 и 1 равна 2.
  • self.assertEqual(-1 + (-1), -2): Проверяем, что сумма -1 и -1 равна -2.
  • self.assertEqual(1 + (-1), 0): Проверяем, что сумма 1 и -1 равна 0.
  • if __name__ == '__main__': unittest.main(): Запускаем тесты, если скрипт выполняется как основная программа.

В этом примере несколько проверок логически связаны, так как они все проверяют одну и ту же операцию — сложение.

Тема: Тестовая документация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки