26. Средства разработки¶Development Tools
Модули, описанные в этой главе, помогают писать программное обеспечение. Например,
модуль pydoc принимает модуль и генерирует документацию на основе его
содержимого. Модули doctest и unittest содержат
фреймворки для написания модульных тестов, которые автоматически выполняют код и проверяют,
что вывод соответствует ожидаемому. 2to3 может переводить исходный код Python 2.x
в корректный код Python 3.x.
Список модулей, описанных в этой главе:
- 26.1.
typing– Поддержка подсказок типовtyping – Support for type hints - 26.2.
pydoc– Генератор документации и встроенная справочная системаpydoc – Documentation generator and online help system - 26.3.
doctest– Тестирование интерактивных примеров Pythondoctest – Test interactive Python examples- 26.3.1. Простое использование: проверка примеров в строках документацииSimple Usage: Checking Examples in Docstrings
- 26.3.2. Простое использование: проверка примеров в текстовом файлеSimple Usage: Checking Examples in a Text File
- 26.3.3. Принцип работыHow It Works
- 26.3.3.1. Какие строки документации проверяются?Which Docstrings Are Examined?
- 26.3.3.2. Как распознаются примеры из строк документации?How are Docstring Examples Recognized?
- 26.3.3.3. Каков контекст выполнения?What’s the Execution Context?
- 26.3.3.4. Что насчёт исключений?What About Exceptions?
- 26.3.3.5. Флаги опцийOption Flags
- 26.3.3.6. ДирективыDirectives
- 26.3.3.7. ПредупрежденияWarnings
- 26.3.4. Базовый APIBasic API
- 26.3.5. API модуля unittestUnittest API
- 26.3.6. Продвинутый APIAdvanced API
- 26.3.7. ОтладкаDebugging
- 26.3.8. ПроповедьSoapbox
- 26.4.
unittest– фреймворк для модульного тестированияunittest – Unit testing framework- 26.4.1. Простой примерBasic example
- 26.4.2. Интерфейс командной строкиCommand-Line Interface
- 26.4.3. Обнаружение тестовTest Discovery
- 26.4.4. Организация тестового кодаOrganizing test code
- 26.4.5. Повторное использование старого тестового кодаRe-using old test code
- 26.4.6. Пропуск тестов и ожидаемые сбоиSkipping tests and expected failures
- 26.4.7. Различение итераций тестов с помощью подтестовDistinguishing test iterations using subtests
- 26.4.8. Классы и функцииClasses and functions
- 26.4.9. Фикстуры классов и модулейClass and Module Fixtures
- 26.4.10. Обработка сигналовSignal Handling
- 26.5.
unittest.mock– библиотека mock-объектовunittest.mock – mock object library- 26.5.1. Краткое руководствоQuick Guide
- 26.5.2. Класс MockThe Mock Class
- 26.5.3. ПатчерыThe patchers
- 26.5.3.1. patch
- 26.5.3.2. patch.object
- 26.5.3.3. patch.dict
- 26.5.3.4. patch.multiple
- 26.5.3.5. Методы patch: start и stoppatch methods: start and stop
- 26.5.3.6. patch builtins
- 26.5.3.7. TEST_PREFIX
- 26.5.3.8. Вложение декораторов patchNesting Patch Decorators
- 26.5.3.9. Где применять patchWhere to patch
- 26.5.3.10. Патчинг дескрипторов и прокси-объектовPatching Descriptors and Proxy Objects
- 26.5.4. MagicMock и поддержка магических методовMagicMock and magic method support
- 26.5.5. Вспомогательные средстваHelpers
- 26.6.
unittest.mock– начало работыunittest.mock – getting started- 26.6.1. Использование MockUsing Mock
- 26.6.1.1. Подмена методов в MockMock Patching Methods
- 26.6.1.2. Mock для вызовов методов объектаMock for Method Calls on an Object
- 26.6.1.3. Мокирование классовMocking Classes
- 26.6.1.4. Именование моковNaming your mocks
- 26.6.1.5. Отслеживание всех вызововTracking all Calls
- 26.6.1.6. Установка возвращаемых значений и атрибутовSetting Return Values and Attributes
- 26.6.1.7. Генерация исключений с помощью моковRaising exceptions with mocks
- 26.6.1.8. Функции и итераторы побочных эффектовSide effect functions and iterables
- 26.6.1.9. Создание Mock на основе существующего объектаCreating a Mock from an Existing Object
- 26.6.2. Декораторы patchPatch Decorators
- 26.6.3. Дополнительные примерыFurther Examples
- 26.6.3.1. Мокирование цепочек вызововMocking chained calls
- 26.6.3.2. Частичное мокированиеPartial mocking
- 26.6.3.3. Мокирование метода-генератораMocking a Generator Method
- 26.6.3.4. Применение одного патча ко всем тестовым методамApplying the same patch to every test method
- 26.6.3.5. Мокирование несвязанных методовMocking Unbound Methods
- 26.6.3.6. Проверка множественных вызовов с помощью mockChecking multiple calls with mock
- 26.6.3.7. Работа с изменяемыми аргументамиCoping with mutable arguments
- 26.6.3.8. Вложенные патчиNesting Patches
- 26.6.3.9. Мокирование словаря с помощью MagicMockMocking a dictionary with MagicMock
- 26.6.3.10. Моки подклассов и их атрибутовMock subclasses and their attributes
- 26.6.3.11. Мокирование импортов с помощью patch.dictMocking imports with patch.dict
- 26.6.3.12. Отслеживание порядка вызовов и менее многословные проверки вызововTracking order of calls and less verbose call assertions
- 26.6.3.13. Более сложное сопоставление аргументовMore complex argument matching
- 26.6.1. Использование MockUsing Mock
- 26.7. 2to3 – автоматизированная трансляция кода Python 2 в Python 32to3 - Automated Python 2 to 3 code translation
- 26.8.
test– Пакет регрессионного тестирования для Pythontest – Regression tests package for Python - 26.9.
test.support– Утилиты для набора тестов Pythontest.support – Utilities for the Python test suite