Sobes.tech
Junior
228

Кои модули за тестване в Python познавате?

Отговор от AI

sobes.tech AI

  • unittest (или PyUnit) - стандартен модул за създаване и изпълнение на тестове. Поддържа концепции като TestCase, TestSuite и TestRunner.
  • pytest - популярен външен фреймуърк за тестване. Отличава се с простотата при писане на тестове (без необходимост да наследявате от TestCase), поддръжка на фикстури, параметризация и гъвкава система от плъгини.
  • nose2 - още един външен фреймуърк, който подобрява и разширява възможностите на unittest.
  • doctest - позволява изпълнението на примери от код, вградени в docstring-овете, като тестове.
  • mock (вградена в unittest.mock в Python 3.3+) - използва се за заместване на части от системата с "фиктивни" (mock) обекти, което позволява тестване на кода независимо от зависимостите му.
  • coverage.py - измерва покритието на кода с тестове.
  • hypothesis - рамка за property-based тестове, която генерира разнообразни входни данни за проверка на инвариантите на вашия код.

Сравнение между unittest и pytest:

Характеристика unittest pytest
Описание на тестовете Класове, наследяващи TestCase Функции или методи на класове
Фикстури Методи setUp, tearDown Декоратор @pytest.fixture
Параметризация Изисква допълнителни трикове Вградена (@pytest.mark.parametrize)
Отчети Базови По-подробни
Плъгини Ограничено Широка екосистема от плъгини

Пример за прост тест с pytest:

# my_module.py
def add(a, b):
    return a + b

# test_my_module.py
def test_add():
    """Тест на функцията add"""
    assert add(2, 3) == 5
    assert add(-1, 1) == 0
    assert add(0, 0) == 0

Изпълнение на тестовете:

pytest