Тестирование и анализ кода на Python: десять главных инструментов |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-11-11 16:48 Код в больших проектах нужно проверять часто и разными способами. А что делать, когда тестов становится слишком много, как их группировать, запускать и отслеживать? Можно ли проводить тесты параллельно и где брать для них данные? Чтобы упростить себе жизнь, конечно, используйте фреймворки и модули. Они помогут организовать структуру и ускорят процессы. Не так давно мы рассказывали о популярных линтерах, которые подсвечивают ошибки в коде (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 Комментарии: |
|