Проверка вывода в модульных тестах Python: подробное руководство с примерами

Чтобы подтвердить выходные данные с помощью NoseTest или unittest в Python, вы можете использовать различные методы в зависимости от конкретного сценария. Вот несколько распространенных подходов:

  1. Использование методов утверждения.
    И NoseTest, и unittest предоставляют набор методов утверждения для сравнения значений и условий утверждения. Некоторые часто используемые методы включают в себя:

    • assertEqual(a, b): проверяет, равны ли aи b.
    • assertTrue(x): проверяет, имеет ли xзначение True.
    • assertFalse(x): проверяет, имеет ли xзначение False.
    • assertIs(a, b): проверяет, являются ли aи bодним и тем же объектом.
    • assertIsNone(x): проверяет, имеет ли xзначение None.
    • assertIn(a, b): проверяет, присутствует ли aв b.
    • assertRaises(Exception, callable, *args, kwargs): проверяет, вызывается ли callableс argsи kwargs>вызывает исключение типа Exception.
  2. Сравнение значений вручную.
    Если выходные данные сложны или вам необходимо выполнить пользовательское сравнение, вы можете вручную сравнить ожидаемые и фактические значения. Например:

    expected = 10
    actual = my_function()
    assert expected == actual
  3. Подтверждение исключений.
    Вы можете использовать метод assertRaises, чтобы проверить, возникает ли конкретное исключение при выполнении определенного фрагмента кода. Например:

    def test_division_by_zero(self):
       with self.assertRaises(ZeroDivisionError):
           result = 1 / 0
  4. Имитация внешних зависимостей.
    При тестировании кода, основанного на внешних зависимостях, вы можете использовать фреймворки для имитации, такие как unittest.mockили unittest.mock( в Python 3.3+), чтобы заменить фактические зависимости фиктивными объектами. Это позволяет вам контролировать поведение зависимостей во время тестирования и утверждать ожидаемое взаимодействие между вашим кодом и зависимостями.