Инструменты разработки¶Development Tools
Модули, описанные в этой главе, помогают писать программное обеспечение. Например,
модуль pydoc принимает модуль и генерирует документацию на основе его
содержимого. Модули doctest и unittest содержат
фреймворки для написания модульных тестов, которые автоматически выполняют код и проверяют,
что вывод соответствует ожидаемому. 2to3 может переводить исходный код Python 2.x
в корректный код Python 3.x.
Список модулей, описанных в этой главе:
typing– Поддержка аннотаций типовtyping – Support for type hintspydoc– генератор документации и система интерактивной справкиpydoc – Documentation generator and online help systemdoctest– тестирование интерактивных примеров Pythondoctest – Test interactive Python examples- Простое использование: проверка примеров в строках документацииSimple Usage: Checking Examples in Docstrings
- Простое использование: проверка примеров в текстовом файлеSimple Usage: Checking Examples in a Text File
- Как это работаетHow It Works
- Какие строки документации проверяются?Which Docstrings Are Examined?
- Как распознаются примеры в строках документации?How are Docstring Examples Recognized?
- Каков контекст выполнения?What’s the Execution Context?
- А как насчёт исключений?What About Exceptions?
- Флаги опцийOption Flags
- ДирективыDirectives
- ПредупрежденияWarnings
- Базовый APIBasic API
- API unittestUnittest API
- Расширенный APIAdvanced API
- ОтладкаDebugging
- ТрибунаSoapbox
unittest– фреймворк для модульного тестированияunittest – Unit testing framework- Простой примерBasic example
- Интерфейс командной строкиCommand-Line Interface
- Обнаружение тестовTest Discovery
- Организация тестового кодаOrganizing test code
- Повторное использование старого тестового кодаRe-using old test code
- Пропуск тестов и ожидаемые сбоиSkipping tests and expected failures
- Различение итераций теста с помощью подтестовDistinguishing test iterations using subtests
- Классы и функцииClasses and functions
- Фикстуры классов и модулейClass and Module Fixtures
- Обработка сигналовSignal Handling
unittest.mock– библиотека mock-объектовunittest.mock – mock object library- Краткое руководствоQuick Guide
- Класс MockThe Mock Class
- ПатчерыThe patchers
- patch
- patch.object
- patch.dict
- patch.multiple
- Методы patch: start и stoppatch methods: start and stop
- patch встроенных объектовpatch builtins
- TEST_PREFIX
- Вложение декораторов patchNesting Patch Decorators
- Где применять patchWhere to patch
- Подмена дескрипторов и прокси-объектовPatching Descriptors and Proxy Objects
- MagicMock и поддержка магических методовMagicMock and magic method support
- Вспомогательные средстваHelpers
unittest.mock– начало работыunittest.mock – getting started- Использование MockUsing Mock
- Методы подмены моковMock Patching Methods
- Mock для вызовов методов объектаMock for Method Calls on an Object
- Создание моков для классовMocking Classes
- Именование моковNaming your mocks
- Отслеживание всех вызововTracking all Calls
- Установка возвращаемых значений и атрибутовSetting Return Values and Attributes
- Возбуждение исключений с помощью моковRaising exceptions with mocks
- Функции побочного эффекта и итерируемые объектыSide effect functions and iterables
- Создание мока на основе существующего объектаCreating a Mock from an Existing Object
- Декораторы patchPatch Decorators
- Дополнительные примерыFurther Examples
- Мокирование цепочек вызововMocking chained calls
- Частичное мокированиеPartial mocking
- Создание мока для метода-генератораMocking a Generator Method
- Применение одного и того же patch к каждому тестовому методуApplying the same patch to every test method
- Создание моков для несвязанных методовMocking Unbound Methods
- Проверка множественных вызовов с помощью mockChecking multiple calls with mock
- Работа с изменяемыми аргументамиCoping with mutable arguments
- Вложенные подменыNesting Patches
- Мокирование словаря с помощью MagicMockMocking a dictionary with MagicMock
- Подклассы Mock и их атрибутыMock subclasses and their attributes
- Мокирование импортов с помощью patch.dictMocking imports with patch.dict
- Отслеживание порядка вызовов и менее многословные утверждения о вызовахTracking order of calls and less verbose call assertions
- Более сложное сопоставление аргументовMore complex argument matching
- Использование MockUsing Mock
- 2to3 – автоматический перенос кода с Python 2 на Python 32to3 - Automated Python 2 to 3 code translation
test– Пакет регрессионных тестов для Pythontest – Regression tests package for Pythontest.support– Утилиты для набора тестов Pythontest.support – Utilities for the Python test suitetest.support.script_helper– Утилиты для тестов выполнения Pythontest.support.script_helper – Utilities for the Python execution tests
См. также режим разработки Python: параметр -X dev и
переменная окружения PYTHONDEVMODE.