26. Ferramentas de Desenvolvimento
**********************************

Os módulos descritos neste capítulo ajudam você a escrever softwares.
Por exemplo, o módulo "pydoc" recebe um módulo e gera documentação com
base no conteúdo do módulo. Os módulos "doctest" e "unittest" contêm
frameworks para escrever testes unitários que automaticamente
exercitam código e verificam se a saída esperada é produzida. **2to3**
pode traduzir o código-fonte do Python 2.x para um código válido do
Python 3.x.

A lista de módulos descritos neste capítulo é:

* 26.1. "typing" --- Support for type hints

  * 26.1.1. Type aliases

  * 26.1.2. NewType

  * 26.1.3. Callable

  * 26.1.4. Generics

  * 26.1.5. User-defined generic types

  * 26.1.6. The "Any" type

  * 26.1.7. Classes, functions, and decorators

* 26.2. "pydoc" --- Gerador de documentação e sistema de ajuda online

* 26.3. "doctest" --- Teste exemplos interativos de Python

  * 26.3.1. Uso simples: verificando exemplos em Docstrings

  * 26.3.2. Utilização comum: Verificando exemplos em um arquivo de
    texto

  * 26.3.3. Como funciona

    * 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. Flags opcionais

    * 26.3.3.6. Directives

    * 26.3.3.7. Avisos

  * 26.3.4. Basic API

  * 26.3.5. API do Unittest

  * 26.3.6. Advanced API

    * 26.3.6.1. DocTest Objects

    * 26.3.6.2. Example Objects

    * 26.3.6.3. DocTestFinder objects

    * 26.3.6.4. DocTestParser objects

    * 26.3.6.5. DocTestRunner objects

    * 26.3.6.6. OutputChecker objects

  * 26.3.7. Depuração

  * 26.3.8. Soapbox

* 26.4. "unittest" --- Framework de Testes Unitários

  * 26.4.1. Exemplo Básico

  * 26.4.2. Interface de Linha de Comando

    * 26.4.2.1. Opções de linha de comando

  * 26.4.3. Test Discovery

  * 26.4.4. Organizando código teste

  * 26.4.5. Reutilizando códigos de teste antigos

  * 26.4.6. Ignorando testes e falhas esperadas

  * 26.4.7. Distinguindo iterações de teste utilizando subtestes

  * 26.4.8. Classes e funções

    * 26.4.8.1. Casos de teste

      * 26.4.8.1.1. Deprecated aliases

    * 26.4.8.2. Grouping tests

    * 26.4.8.3. Carregando e executando testes

      * 26.4.8.3.1. load_tests Protocol

  * 26.4.9. Classes e Módulos de Definição de Contexto

    * 26.4.9.1. setUpClass and tearDownClass

    * 26.4.9.2. setUpModule and tearDownModule

  * 26.4.10. Tratamento de sinal

* 26.5. "unittest.mock" --- biblioteca de objeto mock

  * 26.5.1. Guia Rápido

  * 26.5.2. A classe Mock

    * 26.5.2.1. Calling

    * 26.5.2.2. Deleting Attributes

    * 26.5.2.3. Mock names and the name attribute

    * 26.5.2.4. Attaching Mocks as Attributes

  * 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 methods: start and stop

    * 26.5.3.6. patch builtins

    * 26.5.3.7. TEST_PREFIX

    * 26.5.3.8. Nesting Patch Decorators

    * 26.5.3.9. Where to patch

    * 26.5.3.10. Patching Descriptors and Proxy Objects

  * 26.5.4. MagicMock and magic method support

    * 26.5.4.1. Mocking Magic Methods

    * 26.5.4.2. Magic Mock

  * 26.5.5. Helpers

    * 26.5.5.1. sentinel

    * 26.5.5.2. DEFAULT

    * 26.5.5.3. call

    * 26.5.5.4. create_autospec

    * 26.5.5.5. ANY

    * 26.5.5.6. FILTER_DIR

    * 26.5.5.7. mock_open

    * 26.5.5.8. Autospeccing

* 26.6. "unittest.mock" --- começando

  * 26.6.1. Usando Mock

    * 26.6.1.1. Mock Patching Methods

    * 26.6.1.2. Mock for Method Calls on an Object

    * 26.6.1.3. Mocking Classes

    * 26.6.1.4. Nomeando os 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. Creating a Mock from an Existing Object

  * 26.6.2. Patch 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. Checking multiple calls with mock

    * 26.6.3.7. Coping with mutable arguments

    * 26.6.3.8. Nesting Patches

    * 26.6.3.9. Mocking a dictionary with MagicMock

    * 26.6.3.10. Mock subclasses and their attributes

    * 26.6.3.11. Mocking 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.7. 2to3 - Tradução Automatizada de Código Python 2 para 3

  * 26.7.1. Usando o 2to3

  * 26.7.2. Fixers

  * 26.7.3. "lib2to3" - biblioteca 2to3's

* 26.8. "test" --- Pacote de Testes de Regressão do Python

  * 26.8.1. Escrever testes unitáriops para o pacote "test"

  * 26.8.2. Running tests using the command-line interface

* 26.9. "test.support" --- Utilitários para o conjunto de teste do
  Python
