Документация Python неофициальный перевод

development.md

147 строк · 16.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.5/library/development.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 26. Инструменты разработки89Модули, описанные в этой главе, помогают писать программное обеспечение. Например, модуль [`pydoc`](https://python-all.ru/3.5/library/pydoc.html#module-pydoc) принимает модуль и генерирует документацию на основе его содержимого. Модули [`doctest`](https://python-all.ru/3.5/library/doctest.html#module-doctest) и [`unittest`](https://python-all.ru/3.5/library/unittest.html#module-unittest) содержат фреймворки для написания модульных тестов, которые автоматически выполняют код и проверяют, что вывод соответствует ожидаемому. **2to3** может переводить исходный код Python 2.x в корректный код Python 3.x.1011Список модулей, описанных в этой главе:1213- [26.1. `typing` – Поддержка подсказок типов](https://python-all.ru/3.5/library/typing.html)1415  - [26.1.1. Псевдонимы типов](https://python-all.ru/3.5/library/typing.html#type-aliases)16  - [26.1.2. NewType](https://python-all.ru/3.5/library/typing.html#newtype)17  - [26.1.3. Callable](https://python-all.ru/3.5/library/typing.html#callable)18  - [26.1.4. Дженерики](https://python-all.ru/3.5/library/typing.html#generics)19  - [26.1.5. Пользовательские дженерик-типы](https://python-all.ru/3.5/library/typing.html#user-defined-generic-types)20  - [26.1.6. Тип `Any`](https://python-all.ru/3.5/library/typing.html#the-any-type)21  - [26.1.7. Классы, функции и декораторы](https://python-all.ru/3.5/library/typing.html#classes-functions-and-decorators)22- [26.2. `pydoc` – Генератор документации и встроенная справочная система](https://python-all.ru/3.5/library/pydoc.html)23- [26.3. `doctest` – Тестирование интерактивных примеров Python](https://python-all.ru/3.5/library/doctest.html)2425  - [26.3.1. Простое использование: проверка примеров в строках документации](https://python-all.ru/3.5/library/doctest.html#simple-usage-checking-examples-in-docstrings)26  - [26.3.2. Простое использование: проверка примеров в текстовом файле](https://python-all.ru/3.5/library/doctest.html#simple-usage-checking-examples-in-a-text-file)27  - [26.3.3. Принцип работы](https://python-all.ru/3.5/library/doctest.html#how-it-works)2829    - [26.3.3.1. Какие строки документации проверяются?](https://python-all.ru/3.5/library/doctest.html#which-docstrings-are-examined)30    - [26.3.3.2. Как распознаются примеры из строк документации?](https://python-all.ru/3.5/library/doctest.html#how-are-docstring-examples-recognized)31    - [26.3.3.3. Каков контекст выполнения?](https://python-all.ru/3.5/library/doctest.html#what-s-the-execution-context)32    - [26.3.3.4. Что насчёт исключений?](https://python-all.ru/3.5/library/doctest.html#what-about-exceptions)33    - [26.3.3.5. Флаги опций](https://python-all.ru/3.5/library/doctest.html#option-flags)34    - [26.3.3.6. Директивы](https://python-all.ru/3.5/library/doctest.html#directives)35    - [26.3.3.7. Предупреждения](https://python-all.ru/3.5/library/doctest.html#warnings)36  - [26.3.4. Базовый API](https://python-all.ru/3.5/library/doctest.html#basic-api)37  - [26.3.5. API модуля unittest](https://python-all.ru/3.5/library/doctest.html#unittest-api)38  - [26.3.6. Продвинутый API](https://python-all.ru/3.5/library/doctest.html#advanced-api)3940    - [26.3.6.1. Объекты DocTest](https://python-all.ru/3.5/library/doctest.html#doctest-objects)41    - [26.3.6.2. Объекты Example](https://python-all.ru/3.5/library/doctest.html#example-objects)42    - [26.3.6.3. Объекты DocTestFinder](https://python-all.ru/3.5/library/doctest.html#doctestfinder-objects)43    - [26.3.6.4. Объекты DocTestParser](https://python-all.ru/3.5/library/doctest.html#doctestparser-objects)44    - [26.3.6.5. Объекты DocTestRunner](https://python-all.ru/3.5/library/doctest.html#doctestrunner-objects)45    - [26.3.6.6. Объекты OutputChecker](https://python-all.ru/3.5/library/doctest.html#outputchecker-objects)46  - [26.3.7. Отладка](https://python-all.ru/3.5/library/doctest.html#debugging)47  - [26.3.8. Проповедь](https://python-all.ru/3.5/library/doctest.html#soapbox)48- [26.4. `unittest` – фреймворк для модульного тестирования](https://python-all.ru/3.5/library/unittest.html)4950  - [26.4.1. Простой пример](https://python-all.ru/3.5/library/unittest.html#basic-example)51  - [26.4.2. Интерфейс командной строки](https://python-all.ru/3.5/library/unittest.html#command-line-interface)5253    - [26.4.2.1. Параметры командной строки](https://python-all.ru/3.5/library/unittest.html#command-line-options)54  - [26.4.3. Обнаружение тестов](https://python-all.ru/3.5/library/unittest.html#test-discovery)55  - [26.4.4. Организация тестового кода](https://python-all.ru/3.5/library/unittest.html#organizing-test-code)56  - [26.4.5. Повторное использование старого тестового кода](https://python-all.ru/3.5/library/unittest.html#re-using-old-test-code)57  - [26.4.6. Пропуск тестов и ожидаемые сбои](https://python-all.ru/3.5/library/unittest.html#skipping-tests-and-expected-failures)58  - [26.4.7. Различение итераций тестов с помощью подтестов](https://python-all.ru/3.5/library/unittest.html#distinguishing-test-iterations-using-subtests)59  - [26.4.8. Классы и функции](https://python-all.ru/3.5/library/unittest.html#classes-and-functions)6061    - [26.4.8.1. Тестовые случаи](https://python-all.ru/3.5/library/unittest.html#test-cases)6263      - [26.4.8.1.1. Устаревшие псевдонимы](https://python-all.ru/3.5/library/unittest.html#deprecated-aliases)64    - [26.4.8.2. Группировка тестов](https://python-all.ru/3.5/library/unittest.html#grouping-tests)65    - [26.4.8.3. Загрузка и запуск тестов](https://python-all.ru/3.5/library/unittest.html#loading-and-running-tests)6667      - [26.4.8.3.1. Протокол load\_tests](https://python-all.ru/3.5/library/unittest.html#load-tests-protocol)68  - [26.4.9. Фикстуры классов и модулей](https://python-all.ru/3.5/library/unittest.html#class-and-module-fixtures)6970    - [26.4.9.1. setUpClass и tearDownClass](https://python-all.ru/3.5/library/unittest.html#setupclass-and-teardownclass)71    - [26.4.9.2. setUpModule и tearDownModule](https://python-all.ru/3.5/library/unittest.html#setupmodule-and-teardownmodule)72  - [26.4.10. Обработка сигналов](https://python-all.ru/3.5/library/unittest.html#signal-handling)73- [26.5. `unittest.mock` – библиотека mock-объектов](https://python-all.ru/3.5/library/unittest.mock.html)7475  - [26.5.1. Краткое руководство](https://python-all.ru/3.5/library/unittest.mock.html#quick-guide)76  - [26.5.2. Класс Mock](https://python-all.ru/3.5/library/unittest.mock.html#the-mock-class)7778    - [26.5.2.1. Вызов](https://python-all.ru/3.5/library/unittest.mock.html#calling)79    - [26.5.2.2. Удаление атрибутов](https://python-all.ru/3.5/library/unittest.mock.html#deleting-attributes)80    - [26.5.2.3. Имена Mock и атрибут name](https://python-all.ru/3.5/library/unittest.mock.html#mock-names-and-the-name-attribute)81    - [26.5.2.4. Присоединение макетов как атрибутов](https://python-all.ru/3.5/library/unittest.mock.html#attaching-mocks-as-attributes)82  - [26.5.3. Патчеры](https://python-all.ru/3.5/library/unittest.mock.html#the-patchers)8384    - [26.5.3.1. patch](https://python-all.ru/3.5/library/unittest.mock.html#patch)85    - [26.5.3.2. patch.object](https://python-all.ru/3.5/library/unittest.mock.html#patch-object)86    - [26.5.3.3. patch.dict](https://python-all.ru/3.5/library/unittest.mock.html#patch-dict)87    - [26.5.3.4. patch.multiple](https://python-all.ru/3.5/library/unittest.mock.html#patch-multiple)88    - [26.5.3.5. Методы patch: start и stop](https://python-all.ru/3.5/library/unittest.mock.html#patch-methods-start-and-stop)89    - [26.5.3.6. patch builtins](https://python-all.ru/3.5/library/unittest.mock.html#patch-builtins)90    - [26.5.3.7. TEST\_PREFIX](https://python-all.ru/3.5/library/unittest.mock.html#test-prefix)91    - [26.5.3.8. Вложение декораторов patch](https://python-all.ru/3.5/library/unittest.mock.html#nesting-patch-decorators)92    - [26.5.3.9. Где применять patch](https://python-all.ru/3.5/library/unittest.mock.html#where-to-patch)93    - [26.5.3.10. Патчинг дескрипторов и прокси-объектов](https://python-all.ru/3.5/library/unittest.mock.html#patching-descriptors-and-proxy-objects)94  - [26.5.4. MagicMock и поддержка магических методов](https://python-all.ru/3.5/library/unittest.mock.html#magicmock-and-magic-method-support)9596    - [26.5.4.1. Мокирование магических методов](https://python-all.ru/3.5/library/unittest.mock.html#mocking-magic-methods)97    - [26.5.4.2. Magic Mock](https://python-all.ru/3.5/library/unittest.mock.html#magic-mock)98  - [26.5.5. Вспомогательные средства](https://python-all.ru/3.5/library/unittest.mock.html#helpers)99100    - [26.5.5.1. sentinel](https://python-all.ru/3.5/library/unittest.mock.html#sentinel)101    - [26.5.5.2. DEFAULT](https://python-all.ru/3.5/library/unittest.mock.html#default)102    - [26.5.5.3. call](https://python-all.ru/3.5/library/unittest.mock.html#call)103    - [26.5.5.4. create\_autospec](https://python-all.ru/3.5/library/unittest.mock.html#create-autospec)104    - [26.5.5.5. ANY](https://python-all.ru/3.5/library/unittest.mock.html#any)105    - [26.5.5.6. FILTER\_DIR](https://python-all.ru/3.5/library/unittest.mock.html#filter-dir)106    - [26.5.5.7. mock\_open](https://python-all.ru/3.5/library/unittest.mock.html#mock-open)107    - [26.5.5.8. Autospeccing](https://python-all.ru/3.5/library/unittest.mock.html#autospeccing)108- [26.6. `unittest.mock` – начало работы](https://python-all.ru/3.5/library/unittest.mock-examples.html)109110  - [26.6.1. Использование Mock](https://python-all.ru/3.5/library/unittest.mock-examples.html#using-mock)111112    - [26.6.1.1. Подмена методов в Mock](https://python-all.ru/3.5/library/unittest.mock-examples.html#mock-patching-methods)113    - [26.6.1.2. Mock для вызовов методов объекта](https://python-all.ru/3.5/library/unittest.mock-examples.html#mock-for-method-calls-on-an-object)114    - [26.6.1.3. Мокирование классов](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-classes)115    - [26.6.1.4. Именование моков](https://python-all.ru/3.5/library/unittest.mock-examples.html#naming-your-mocks)116    - [26.6.1.5. Отслеживание всех вызовов](https://python-all.ru/3.5/library/unittest.mock-examples.html#tracking-all-calls)117    - [26.6.1.6. Установка возвращаемых значений и атрибутов](https://python-all.ru/3.5/library/unittest.mock-examples.html#setting-return-values-and-attributes)118    - [26.6.1.7. Генерация исключений с помощью моков](https://python-all.ru/3.5/library/unittest.mock-examples.html#raising-exceptions-with-mocks)119    - [26.6.1.8. Функции и итераторы побочных эффектов](https://python-all.ru/3.5/library/unittest.mock-examples.html#side-effect-functions-and-iterables)120    - [26.6.1.9. Создание Mock на основе существующего объекта](https://python-all.ru/3.5/library/unittest.mock-examples.html#creating-a-mock-from-an-existing-object)121  - [26.6.2. Декораторы patch](https://python-all.ru/3.5/library/unittest.mock-examples.html#patch-decorators)122  - [26.6.3. Дополнительные примеры](https://python-all.ru/3.5/library/unittest.mock-examples.html#further-examples)123124    - [26.6.3.1. Мокирование цепочек вызовов](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-chained-calls)125    - [26.6.3.2. Частичное мокирование](https://python-all.ru/3.5/library/unittest.mock-examples.html#partial-mocking)126    - [26.6.3.3. Мокирование метода-генератора](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-a-generator-method)127    - [26.6.3.4. Применение одного патча ко всем тестовым методам](https://python-all.ru/3.5/library/unittest.mock-examples.html#applying-the-same-patch-to-every-test-method)128    - [26.6.3.5. Мокирование несвязанных методов](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-unbound-methods)129    - [26.6.3.6. Проверка множественных вызовов с помощью mock](https://python-all.ru/3.5/library/unittest.mock-examples.html#checking-multiple-calls-with-mock)130    - [26.6.3.7. Работа с изменяемыми аргументами](https://python-all.ru/3.5/library/unittest.mock-examples.html#coping-with-mutable-arguments)131    - [26.6.3.8. Вложенные патчи](https://python-all.ru/3.5/library/unittest.mock-examples.html#nesting-patches)132    - [26.6.3.9. Мокирование словаря с помощью MagicMock](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-a-dictionary-with-magicmock)133    - [26.6.3.10. Моки подклассов и их атрибутов](https://python-all.ru/3.5/library/unittest.mock-examples.html#mock-subclasses-and-their-attributes)134    - [26.6.3.11. Мокирование импортов с помощью patch.dict](https://python-all.ru/3.5/library/unittest.mock-examples.html#mocking-imports-with-patch-dict)135    - [26.6.3.12. Отслеживание порядка вызовов и менее многословные проверки вызовов](https://python-all.ru/3.5/library/unittest.mock-examples.html#tracking-order-of-calls-and-less-verbose-call-assertions)136    - [26.6.3.13. Более сложное сопоставление аргументов](https://python-all.ru/3.5/library/unittest.mock-examples.html#more-complex-argument-matching)137- [26.7. 2to3 – автоматизированная трансляция кода Python 2 в Python 3](https://python-all.ru/3.5/library/2to3.html)138139  - [26.7.1. Использование 2to3](https://python-all.ru/3.5/library/2to3.html#using-2to3)140  - [26.7.2. Фиксаторы](https://python-all.ru/3.5/library/2to3.html#fixers)141  - [26.7.3. `lib2to3` – библиотека 2to3](https://python-all.ru/3.5/library/2to3.html#module-lib2to3)142- [26.8. `test` – Пакет регрессионного тестирования для Python](https://python-all.ru/3.5/library/test.html)143144  - [26.8.1. Написание модульных тестов для пакета `test`](https://python-all.ru/3.5/library/test.html#writing-unit-tests-for-the-test-package)145  - [26.8.2. Запуск тестов через интерфейс командной строки](https://python-all.ru/3.5/library/test.html#running-tests-using-the-command-line-interface)146- [26.9. `test.support` – Утилиты для набора тестов Python](https://python-all.ru/3.5/library/test.html#module-test.support)147