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

Основные выводы

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

Пошаговое руководство

Шаг 1: Подготовка проекта

Во-первых, вам нужен файл Python, в котором будет определена ваша функция. В нашем примере мы назвали файл preisberechnung.py. Здесь вы определяете функцию get_selling_price, которая берет цену покупки и добавляет наценку.

Основы модульного тестирования Python: ваше введение

Шаг 2: Создайте файл для ваших модульных тестов

Затем создайте новый файл, содержащий тесты для этой функции. Назовем этот файл preisberechnung_test.py. Здесь вы будете работать с модулем unittest.

Чтобы использовать фреймворк, импортируйте его в начале вашего файла:

import unittest from preisberechnung import get_verkaufspreis
Основы модульного тестирования Python: ваше введение

Шаг 3: Определите тестовый класс

Класс теста должен наследоваться от unittest.TestCase. Это позволит вам организовать все тесты в структурированном виде. Переименуйте класс в PriceCalculationTest, чтобы уточнить, что именно тестируется.

Основы модульного тестирования Python: ваше введение

Шаг 4: Напишите тесты

Теперь пришло время написать реальные тесты. Начните с теста, который проверяет, имеет ли возвращаемое значение get_sale_price ожидаемый тип (float):

class PriceCalculationTest(unittest.TestCase): def test_price_is_float(self): vk = get_sale_price(100) self.assertIsInstance(vk, float)
Основы модульного тестирования Python: ваше введение

Шаг 5: Проверка недействительных входов

Также важно протестировать недействительные входы. Добавьте тест, который проверяет, выбрасывает ли функция исключение для недопустимых входных данных, таких как None или строка:

def test_invalid_input(self): with self.assertRaises(TypeError): get_sale_price("invalid")
Основы модульного тестирования Python: ваше введение

Шаг 6: Выполнение тестов

Чтобы запустить тесты, вы можете сделать это либо через терминал, либо непосредственно в вашей IDE. Если вы используете терминал, выполните следующие действия:

python -m unittest price_calculation_test.py

В вашей IDE, например PyCharm, вы можете использовать конфигурацию run для выполнения тестов.

Основы модульного тестирования Python: ваше введение

Шаг 7: Проверьте результаты

Если вы успешно выполнили тесты, вы получите результат, который покажет, все ли тесты пройдены. Зеленый результат означает, что ваш код работает так, как было задумано.

Шаг 8: Расширение тестов

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

Основы модульного тестирования Python: ваше введение

Резюме - Первый юнит-тест на Python: основы и реализация

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

Часто задаваемые вопросы

Как создать модульный тест в Python? Чтобы создать модульный тест в Python, создайте тестовый класс, который наследуется от unittest.TestCase, и пишите тесты как методы этого класса.

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

Как запускать модульные тесты?Вы можете запускать модульные тесты через терминал с помощью команды python -m unittest [filename] или непосредственно в вашей IDE.

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