Herramientas de desarrollo
**************************

Los módulos descritos en este capítulo le ayudan a escribir software.
Por ejemplo, el módulo "pydoc" toma un módulo y genera documentación
basada en el contenido del módulo.  Los módulos "doctest" y "unittest"
contienen frameworks para escribir pruebas unitarias que ejecutan y
validan automáticamente el código, verificando que se produce la
salida esperada.  **2to3** puede traducir el código fuente de Python
2.x en código válido de Python 3.x.

La lista de módulos descritos en este capítulo es:

* "typing" --- Soporte para *type hints*

  * Alias de tipo

  * NewType

  * Callable

  * Genéricos

  * Tipos genéricos definidos por el usuario

  * El tipo "Any"

  * Subtipado nominal vs estructural

  * Clases, funciones y decoradores

* "pydoc" --- Generador de documentación y Sistema de ayuda en línea

* "doctest" --- Test interactive Python examples

  * Simple Usage: Checking Examples in Docstrings

  * Simple Usage: Checking Examples in a Text File

  * How It Works

    * Which Docstrings Are Examined?

    * How are Docstring Examples Recognized?

    * What's the Execution Context?

    * What About Exceptions?

    * Option Flags

    * Directives

    * Warnings

  * Basic API

  * Unittest API

  * Advanced API

    * DocTest Objects

    * Example Objects

    * DocTestFinder objects

    * DocTestParser objects

    * DocTestRunner objects

    * OutputChecker objects

  * Debugging

  * Soapbox

* "unittest" --- Unit testing framework

  * Basic example

  * Command-Line Interface

    * Command-line options

  * Test Discovery

  * Organizing test code

  * Re-using old test code

  * Skipping tests and expected failures

  * Distinguishing test iterations using subtests

  * Classes and functions

    * Test cases

      * Deprecated aliases

    * Grouping tests

    * Loading and running tests

      * load_tests Protocol

  * Class and Module Fixtures

    * setUpClass and tearDownClass

    * setUpModule and tearDownModule

  * Signal Handling

* "unittest.mock" --- Biblioteca de objetos simulados

  * Guía rápida

  * La clase Mock

    * Llamar a los objetos simulados

    * Eliminar atributos

    * Los nombres de los objetos simulados y el atributo *name*

    * Adjuntar objetos simulados como atributos

  * Parcheadores

    * patch

    * patch.object

    * patch.dict

    * patch.multiple

    * Métodos start y stop de patch

    * Parchear objetos incorporados (builtins)

    * TEST_PREFIX

    * Anidando decoradores patch

    * Dónde parchear

    * Parcheando descriptores y objetos proxy

  * MagicMock y el soporte de métodos mágicos

    * Simular métodos mágicos

    * Magic Mock

  * Ayudantes

    * sentinel

    * DEFAULT

    * call

    * create_autospec

    * ANY

    * FILTER_DIR

    * mock_open

    * Autoespecificación

    * Sellar objetos simulados

* "unittest.mock" --- getting started

  * Usando Mock

    * Mock Patching Methods

    * 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

  * Patch Decorators

  * Further Examples

    * Mocking chained calls

    * Partial mocking

    * Mocking a Generator Method

    * Applying the same patch to every test method

    * Mocking Unbound Methods

    * Checking multiple calls with mock

    * Coping with mutable arguments

    * Nesting Patches

    * Mocking a dictionary with MagicMock

    * Mock subclasses and their attributes

    * Mocking imports with patch.dict

    * Tracking order of calls and less verbose call assertions

    * More complex argument matching

* 2to3 - Traducción de código Python 2 a 3

  * Usando 2to3

  * Fixers

  * "lib2to3" - librería 2to3

* "test" --- Paquete de pruebas de regresión para Python

  * Escritura de pruebas unitarias para el paquete "test"

  * Ejecución de pruebas utilizando la interfaz de línea de comandos

* "test.support" --- Utilidades para el conjunto de pruebas de Python

* "test.support.script_helper" ---Utilidades para las pruebas de
  ejecución de Python

Consulta también el modo de desarrollo de Python: la opción "-X" "dev"
y la variable de entorno "PYTHONDEVMODE".
