26. Инструменты разработки¶Development Tools
Модули, описанные в этой главе, помогают разрабатывать программное обеспечение. Например, модуль pydoc принимает модуль и генерирует документацию на основе его содержимого. Модули doctest и unittest содержат фреймворки для написания модульных тестов, которые автоматически выполняют код и проверяют, что выводится ожидаемый результат. 2to3 может транслировать исходный код Python 2.x в корректный код Python 3.x.
Список модулей, описанных в этой главе:
- 26.1. pydoc – Генератор документации и встроенная справочная системаpydoc – Documentation generator and online help system
- 26.2. doctest – Тестирование интерактивных примеров Pythondoctest – Test interactive Python examples
- 26.2.1. Простое использование: проверка примеров в строках документацииSimple Usage: Checking Examples in Docstrings
- 26.2.2. Простое использование: проверка примеров в текстовом файлеSimple Usage: Checking Examples in a Text File
- 26.2.3. Как это работаетHow It Works
- 26.2.3.1. Какие строки документации проверяются?Which Docstrings Are Examined?
- 26.2.3.2. Как распознаются примеры в docstring?How are Docstring Examples Recognized?
- 26.2.3.3. Каков контекст выполнения?What’s the Execution Context?
- 26.2.3.4. Что насчёт исключений?What About Exceptions?
- 26.2.3.5. Флаги опцийOption Flags
- 26.2.3.6. ДирективыDirectives
- 26.2.3.7. ПредупрежденияWarnings
- 26.2.4. Базовый APIBasic API
- 26.2.5. Unittest API
- 26.2.6. Расширенный APIAdvanced API
- 26.2.7. ОтладкаDebugging
- 26.2.8. Soapbox
- 26.3. unittest – Фреймворк для модульного тестированияunittest – Unit testing framework
- 26.3.1. Базовый примерBasic example
- 26.3.2. Интерфейс командной строкиCommand-Line Interface
- 26.3.3. Обнаружение тестовTest Discovery
- 26.3.4. Организация тестового кодаOrganizing test code
- 26.3.5. Повторное использование старого тестового кодаRe-using old test code
- 26.3.6. Пропуск тестов и ожидаемые сбоиSkipping tests and expected failures
- 26.3.7. Различение итераций тестов с помощью подтестовDistinguishing test iterations using subtests
- 26.3.8. Классы и функцииClasses and functions
- 26.3.9. Фикстуры классов и модулейClass and Module Fixtures
- 26.3.10. Обработка сигналовSignal Handling
- 26.4. unittest.mock – библиотека mock-объектовunittest.mock – mock object library
- 26.4.1. Краткое руководствоQuick Guide
- 26.4.2. Класс MockThe Mock Class
- 26.4.3. ПатчерыThe patchers
- 26.4.3.1. patch
- 26.4.3.2. patch.object
- 26.4.3.3. patch.dict
- 26.4.3.4. patch.multiple
- 26.4.3.5. Методы patch: start и stoppatch methods: start and stop
- 26.4.3.6. TEST_PREFIX
- 26.4.3.7. Вложение декораторов patchNesting Patch Decorators
- 26.4.3.8. Где выполнять patchWhere to patch
- 26.4.3.9. Патчинг дескрипторов и прокси-объектовPatching Descriptors and Proxy Objects
- 26.4.4. MagicMock и поддержка магических методовMagicMock and magic method support
- 26.4.5. Вспомогательные объектыHelpers
- 26.5. unittest.mock – начало работыunittest.mock – getting started
- 26.5.1. Использование MockUsing Mock
- 26.5.1.1. Подмена методов с помощью MockMock Patching Methods
- 26.5.1.2. Mock для вызовов методов объектаMock for Method Calls on an Object
- 26.5.1.3. Подмена классовMocking Classes
- 26.5.1.4. Именование имитирующих объектовNaming your mocks
- 26.5.1.5. Отслеживание всех вызововTracking all Calls
- 26.5.1.6. Установка возвращаемых значений и атрибутовSetting Return Values and Attributes
- 26.5.1.7. Генерация исключений с помощью имитирующих объектовRaising exceptions with mocks
- 26.5.1.8. Функции и итерируемые объекты для побочных эффектовSide effect functions and iterables
- 26.5.1.9. Создание Mock из существующего объектаCreating a Mock from an Existing Object
- 26.5.2. Декораторы подменыPatch Decorators
- 26.5.3. Дополнительные примерыFurther Examples
- 26.5.3.1. Подмена цепочечных вызововMocking chained calls
- 26.5.3.2. Частичная подменаPartial mocking
- 26.5.3.3. Подмена метода-генератораMocking a Generator Method
- 26.5.3.4. Применение одной и той же подмены к каждому тестовому методуApplying the same patch to every test method
- 26.5.3.5. Подмена несвязанных методовMocking Unbound Methods
- 26.5.3.6. Проверка нескольких вызовов с помощью mockChecking multiple calls with mock
- 26.5.3.7. Работа с изменяемыми аргументамиCoping with mutable arguments
- 26.5.3.8. Вложение подменNesting Patches
- 26.5.3.9. Подмена словаря с помощью MagicMockMocking a dictionary with MagicMock
- 26.5.3.10. Подклассы Mock и их атрибутыMock subclasses and their attributes
- 26.5.3.11. Подмена импортов с помощью patch.dictMocking imports with patch.dict
- 26.5.3.12. Отслеживание порядка вызовов и компактные проверки вызововTracking order of calls and less verbose call assertions
- 26.5.3.13. Более сложное сопоставление аргументовMore complex argument matching
- 26.5.1. Использование MockUsing Mock
- 26.6. 2to3 – автоматическое преобразование кода Python 2 в 32to3 - Automated Python 2 to 3 code translation
- 26.7. test – пакет регрессионного тестирования для Pythontest – Regression tests package for Python
- 26.8. test.support – утилиты для набора тестов Pythontest.support – Utilities for the Python test suite