Тестирование и анализ кода на Python: десять главных инструментов

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

Не так давно мы рассказывали о популярных линтерах, которые подсвечивают ошибки в коде (https://vk.com/wall-84793390_13154), а сегодня делимся десятью инструментами для запуска тестов и анализа кода на Python.

— Pytest

docs.pytest.org/en/6.2.x

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

— Doctest

docs.python.org/3/library/doctest

Как поддерживать документацию большого проекта в актуальном состоянии? Используйте doctest. Всё просто: модуль находит куски текста, которые выглядят как интерактивные сессии Python, и проверяет, чтобы они работали так, как задокументировано.

— Unittest

docs.python.org/3/library/unittest

Инструмент для юнит-тестирования в Python, вдохновлённый пакетом JUnit и похожими фреймворками для других языков. Он позволяет автоматизировать процессы, объединять тесты в коллекции и запускать их независимо от структуры отчётов. Фреймворк поддерживает основные концепции автоматизации, такие как испытательный стенд, минимальный блок тестирования, набор и исполнитель тестов.

— Tox

tox.wiki/en/latest

Если вы работаете с разными версиями Python и одновременно тестируете несколько вариантов кода, используйте Tox — инструмент для управления и автоматизации тестирования в virtualenv. Он запускает тесты в изолированных виртуальных средах и используется в качестве внешнего интерфейса для серверов непрерывной интеграции (CI).

— Mypy

mypy.readthedocs.io/en/stable

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

— Autopep8

pypi.org/project/autopep8

Проверяет и форматирует код в соответствии с руководством PEP 8: изменяет и выравнивает отступы и строки, убирает лишние проблемы и интервалы, делает код аккуратным (но не обязательно «красивым» в полном смысле этого слова — тут уж придётся постараться вам самим!). Линтер также помогает решить проблему с устаревшим кодом, написанным в Python 2.7, делая его частично совместимым с Python 3.

— Pylint

pylint.pycqa.org/en/latest

Ещё один инструмент для проверки кода на соблюдение стандарта, поиска проблем в структуре и реорганизации блоков. Pylint делает около 150 разных проверок, собирает статистику по коду и оценивает его сложность, исходя из количества предупреждений и ошибок.

— Mock

pypi.org/project/mock

Библиотека для замены функций фиктивными объектами. Используется для проверки работы с функциями, которые по какой-то причине невозможно протестировать напрямую — например, потому, что они ещё не написаны. Mock незаменим в новых проектах, где одни компоненты неизбежно пишутся быстрее других, а взаимодействие хочется проверять сразу же. В отличие от ручных патчей, Mock позволяет делать сложные групповые подстановки без необходимости адаптировать функцию под тест. Начиная с версии Python 3.3 этот пакет является частью стандартной библиотеки unittest.mock.

— Factory_boy

factoryboy.readthedocs.io/en/stable

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

— Faker

faker.readthedocs.io/en/master

Для тестирования приложений и проверки сценариев часто требуются данные, похожие на реальные. Их легко сгенерировать в Faker. Причём для популярных категорий вроде информации о пользователе доступны готовые наборы данных. Начиная с версии 4.0.0 пакет поддерживает только Python 3.6 и выше.


Источник: vk.com

Комментарии: