«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Фреймворк модульного тестирования — unittest на Python

Фреймворк модульного тестирования — unittest на Python

Опубликовано 8 ноября 2024 г.
Просматривать:338

Unit test framework - unittest in Python

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

Основные особенности фреймворка unittest

  1. Тестовый пример: тестовый пример создается путем наследования unittest.TestCase. Каждый метод в классе, начинающийся с test_, считается тестом.

  2. Утверждения. Платформа предоставляет различные методы утверждения для проверки ожидаемых результатов, такие как AssertEqual, AssertTrue, AssertFalse и т. д.

  3. Средство выполнения тестов. Платформа включает средство выполнения тестов, которое запускает тесты и сообщает о результатах.

Базовая структура модульного теста

  1. Импортируйте модуль unittest: начните с импорта библиотеки unittest.

  2. Создайте тестовый пример: определите класс, который наследуется от unittest.TestCase.

  3. Определение методов тестирования: каждый метод должен начинаться с test_ и содержать утверждения для проверки ожидаемого поведения.

  4. Запуск тестов: используйте unittest.main() для запуска тестов, если скрипт выполняется напрямую.

Простой пример

Вот простой пример, демонстрирующий, как использовать фреймворк unittest для тестирования простой функции.

Функция для тестирования

Во-первых, давайте создадим простую функцию, которую мы будем тестировать:

math_functions.py

def add(a, b):
вернуть б

def вычесть(a, b):
вернуть a - b

Модульный тест для функции

Теперь мы создадим модульный тест для функций сложения и вычитания:

test_math_functions.py

импортировать модульный тест
from math_functions import add, subtract # Импортируем функции для тестирования

класс TestMathFunctions(unittest.TestCase):

def test_add(self):
    self.assertEqual(add(2, 3), 5)          # Test case: 2   3 = 5
    self.assertEqual(add(-1, 1), 0)         # Test case: -1   1 = 0
    self.assertEqual(add(0, 0), 0)          # Test case: 0   0 = 0

def test_subtract(self):
    self.assertEqual(subtract(5, 3), 2)     # Test case: 5 - 3 = 2
    self.assertEqual(subtract(-1, -1), 0)   # Test case: -1 - (-1) = 0
    self.assertEqual(subtract(0, 5), -5)    # Test case: 0 - 5 = -5

if имя == 'main':
unittest.main()

Пояснение модульного теста

  1. Операторы импорта:

import unittest: импортирует модуль unittest.

from math_functions import add, subtract: импортирует функции, которые мы хотим протестировать.

  1. Создание тестового примера:

class TestMathFunctions(unittest.TestCase): определяет класс тестового примера, который наследуется от unittest.TestCase.

  1. Определение методов тестирования:

Каждый метод, начинающийся с test_, представляет собой отдельный тест.

Внутри каждого метода тестирования self.assertEqual() проверяет, соответствует ли вывод функции ожидаемому значению.

  1. Выполнение тестов:

if name == 'main': unittest.main(): Эта строка позволяет сценарию запускать тесты при непосредственном выполнении.

Проведение тестов

Чтобы запустить тесты, просто запустите скрипт test_math_functions.py. Вы можете сделать это из командной строки:

python test_math_functions.py

Выход

Если все тесты пройдены, вы увидите примерно такой результат:

..

Проведено 2 теста за 0,001 с

ХОРОШО

Это указывает на то, что методы test_add и test_subtract прошли успешно. Если какое-либо утверждение не выполнено, unittest сообщит об ошибке, указав, какой тест не выполнен и почему.

Заключение

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

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/mrcaption49/crud-functionality-in-django-19n2?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3