Инструменты разработки¶Development Tools
Модули, описанные в этой главе, помогают писать программное обеспечение. Например, модуль pydoc принимает модуль и генерирует документацию на основе его содержимого. Модули doctest и unittest содержат фреймворки для написания модульных тестов, которые автоматически выполняют код и проверяют, что выводится ожидаемый результат.
Список модулей, описанных в этой главе:
typing– Поддержка аннотаций типовtyping – Support for type hints- Спецификация системы типов PythonSpecification for the Python Type System
- Псевдонимы типовType aliases
- NewType
- Аннотирование вызываемых объектовAnnotating callable objects
- Обобщённые типыGenerics
- Аннотирование кортежейAnnotating tuples
- Тип объектов классовThe type of class objects
- Аннотирование генераторов и корутинAnnotating generators and coroutines
- Пользовательские обобщённые типыUser-defined generic types
- Тип
AnyThe Any type - Номинальное и структурное подтипированиеNominal vs structural subtyping
- Содержание модуляModule contents
- Специальные примитивы типизацииSpecial typing primitives
- ПротоколыProtocols
- ABC и протоколы для работы с вводом-выводомABCs and Protocols for working with I/O
- Функции и декораторыFunctions and decorators
- Вспомогательные функции интроспекцииIntrospection helpers
- КонстантаConstant
- Устаревшие псевдонимыDeprecated aliases
- Псевдонимы для встроенных типовAliases to built-in types
- Псевдонимы для типов в
collectionsAliases to types in collections - Псевдонимы для других конкретных типовAliases to other concrete types
- Псевдонимы для ABC-контейнеров в
collections.abcAliases to container ABCs in collections.abc - Псевдонимы для асинхронных ABC в
collections.abcAliases to asynchronous ABCs in collections.abc - Псевдонимы для других ABC в
collections.abcAliases to other ABCs in collections.abc - Псевдонимы для
contextlib-ABCAliases to contextlib ABCs
- График устаревания основных возможностейDeprecation Timeline of Major Features
pydoc– генератор документации и система интерактивной справкиpydoc – Documentation generator and online help system- Режим разработки PythonPython Development Mode
doctest– тестирование интерактивных примеров Pythondoctest – Test interactive Python examples- Простое использование: проверка примеров в строках документацииSimple Usage: Checking Examples in Docstrings
- Простое использование: проверка примеров в текстовом файлеSimple Usage: Checking Examples in a Text File
- Использование из командной строкиCommand-line Usage
- Как это работает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
- Порядок приоритета
side_effect,return_valueи wrapsOrder of precedence of side_effect, return_value and wraps
unittest.mock– начало работыunittest.mock – getting started- Использование MockUsing Mock
- Методы подмены MockMock 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
- Мокирование асинхронных итераторовMocking asynchronous iterators
- Мокирование асинхронного контекстного менеджераMocking asynchronous context manager
- Создание мока из существующего объектаCreating a mock from an existing object
- Использование side_effect для возврата содержимого каждого файлаUsing side_effect to return per file content
- Декораторы 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
test– Пакет регрессионных тестов для Pythontest – Regression tests package for Pythontest.support– Утилиты для набора тестов Pythontest.support – Utilities for the Python test suitetest.support.socket_helper– Утилиты для тестирования сокетовtest.support.socket_helper – Utilities for socket teststest.support.script_helper– Утилиты для тестов выполнения Pythontest.support.script_helper – Utilities for the Python execution teststest.support.bytecode_helper– Вспомогательные инструменты для тестирования корректной генерации байт-кодаtest.support.bytecode_helper – Support tools for testing correct bytecode generationtest.support.threading_helper– Утилиты для тестирования потоковtest.support.threading_helper – Utilities for threading teststest.support.os_helper– Утилиты для тестирования ОСtest.support.os_helper – Utilities for os teststest.support.import_helper– утилиты для тестирования импортаtest.support.import_helper – Utilities for import teststest.support.warnings_helper– утилиты для тестирования предупрежденийtest.support.warnings_helper – Utilities for warnings tests