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