Escritura de pruebas unitarias para Python con el Explorador de pruebas en Visual Studio

Las pruebas unitarias son fragmentos de código que prueban otras unidades de código de una aplicación, normalmente funciones aisladas, clases, etc. Cuando una aplicación supera todas sus pruebas unitarias, puede confiar en que al menos su función de programa de bajo nivel es correcta.

Python utiliza pruebas unitarias ampliamente para validar escenarios durante el diseño de un programa. La compatibilidad de Python en Visual Studio incluye características para descubrir, ejecutar y depurar pruebas unitarias dentro del contexto de su proceso de desarrollo, sin tener que ejecutar pruebas independientemente.

En este artículo se proporciona una descripción breve de las funcionalidades de las pruebas unitarias en Visual Studio con Python. Para más información sobre las pruebas unitarias en general, vea Hacer una prueba unitaria del código.

Requisitos previos

Visual Studio para Mac no se admite. Para obtener más información, consulte ¿Qué sucede con Visual Studio para Mac? Visual Studio Code en Windows, Mac y Linux funciona bien con Python a través de extensiones disponibles.

Selección del marco de pruebas de un proyecto de Python

Visual Studio admite dos marcos de pruebas con Python, unittest y pytest (disponibles a partir de Visual Studio 2019 versión 16.3 y posteriores). Ninguno de los marcos se selecciona de forma predeterminada cuando se crea un proyecto de Python.

Siga estos pasos para seleccionar el marco de pruebas del proyecto de Python:

  1. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y seleccione Propiedades.

  2. En el panel Propiedades del proyecto, seleccione la pestaña Prueba y elija el tipo de Marco de pruebas:

    • En el marco unittest, Visual Studio asigna el directorio raíz del proyecto para la detección de pruebas. El valor predeterminado es ., pero puede especificar una ubicación diferente al configurar los valores del proyecto. También puede especificar una o varias cadenas para el Patrón de nombre de archivo de prueba, como test*.py, test_*.py.

    • En el marco pytest, las opciones de prueba como la ubicación de las pruebas y los patrones de nombre de archivo se especifican mediante el archivo de configuración estándar .ini de pytest. De forma predeterminada, la carpeta workspace/project se usa para la ubicación. El patrón de nombre de archivo predeterminado incluye test_*py y *_test.py. Para más información, consulte la documentación de referencia de pytest.

    Nota:

    Al definir el patrón de nombre de archivo, tenga en cuenta que los caracteres especiales como el carácter de subrayado (_) no coinciden con el carácter comodín (*). Si desea usar caracteres especiales en el nombre de archivo, especifique estos caracteres en la definición de patrón, como test_*.py.

  3. Para guardar la selección y la configuración del marco, puede usar el método abreviado de teclado Ctrl+S.

Después de configurar el marco, Visual Studio inicia la detección de pruebas y abre el Explorador de pruebas.

Configuración de pruebas para Python sin un proyecto

Visual Studio permite ejecutar y probar el código de Python existente sin un proyecto, simplemente abriendo una carpeta con código de Python. En este escenario, debe usar un archivo PythonSettings.json para configurar las pruebas.

  1. Abra el código de Python existente con la opción Abrir una carpeta local:

    Captura de pantalla en la que se muestra cómo seleccionar la opción Abrir una carpeta local cuando se inicia Visual Studio 2022.

    Captura de pantalla en la que se muestra cómo seleccionar la opción Abrir una carpeta local cuando se inicia Visual Studio.

  2. Cuando se abre una carpeta de Python, Visual Studio crea varias carpetas ocultas para administrar la configuración relacionada con el programa. Para ver estas carpetas (y cualquier otra carpeta o archivo oculto, como la carpeta .git) en el Explorador de soluciones, seleccione la opción Mostrar todos los archivos:

    Captura de pantalla en la que se muestra cómo ver carpetas y archivos ocultos en el Explorador de soluciones en Visual Studio 2022.

    Captura de pantalla en la que se muestra cómo ver carpetas y archivos ocultos en el Explorador de soluciones en Visual Studio.

  3. En el Explorador de soluciones, expanda la carpeta Configuración local y haga doble clic en el archivo PythonSettings.json para abrir el archivo en el editor.

    Nota:

    La mayoría de las configuraciones muestran dos archivos de configuración: PythonSettings.json y ProjectSettings.json. Para este ejercicio, debe modificar el archivo PythonSettings.json.

    Si no ve este archivo PythonSettings.json en la carpeta Configuración local, puede crearlo manualmente:

    1. Haga clic con el botón derecho en la carpeta Configuración local y seleccione Agregar>Nuevo archivo.

    2. Asigne al archivo el nombre PythonSettings.json y seleccione Entrar para guardar los cambios.

    Visual Studio abre automáticamente el archivo nuevo en el editor.

  4. En el archivo PythonSettings.json, agregue el código siguiente para definir TestFramework. Establezca el valor del marco en pytest o unittest en función del marco de pruebas deseado:

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    
    • Para el marco unittest, si no define valores específicos para los valores UnitTestRootDirectory y UnitTestPattern en el archivo PythonSettings.json, Visual Studio agrega automáticamente estos campos con los valores predeterminados de . y test*.py, respectivamente.

    • Para el marco pytest, las opciones de configuración siempre se especifican en el archivo de configuración .ini de pytest en lugar de a través de la configuración de Visual Studio.

  5. Si el programa de Python contiene una carpeta src independiente de la carpeta que contiene las pruebas, especifique la ruta de acceso a la carpeta src con el valor SearchPaths en el archivo PythonSettings.json:

      "SearchPaths": [".\\src"]
    
  6. Guarde los cambios en el archivo PythonSettings.json.

Después de configurar el marco, Visual Studio inicia la detección de pruebas para el marco especificado. Puede acceder a la prueba en el Explorador de pruebas.

Adición y detección de pruebas

Visual Studio identifica de forma predeterminada las pruebas de unittest y pytest como métodos cuyos nombres empiezan por test.

Para ver cómo Visual Studio inicia la detección de pruebas, siga estos pasos:

  1. Abra un proyecto de Python en Visual Studio.

  2. Establezca las Propiedades del marco de pruebas para el proyecto, como se describe en Seleccionar un marco de pruebas para el proyecto de Python.

  3. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Agregar>nuevo elemento.

    1. En el cuadro de diálogo Agregar nuevo elemento, seleccione el tipo de archivo Unidad de prueba.

    2. Escriba un nombre de archivo que satisfaga la definición de Patrón que especificó para las Propiedades del proyecto.

    3. Seleccione Agregar.

  4. Visual Studio crea el archivo de prueba con código predeterminado:

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    

    Este código importa el módulo estándar unittest y deriva una clase de prueba del método unittest.TestCase. Al ejecutar el script directamente, este código también invoca la función unittest.main().

Al agregar nuevos archivos de prueba, Visual Studio los pone a disposición en el Explorador de pruebas.

Visualización de pruebas con el Explorador de pruebas

Después de configurar el marco de pruebas y los archivos de prueba, Visual Studio busca pruebas y las muestra en el Explorador de pruebas.

Estas son algunas de las formas en que puede trabajar con el Explorador de pruebas:

  • Abra la ventana del Explorador de pruebas; para ello, seleccione Prueba>Explorador de pruebas.

  • Cuando se abra la ventana del Explorador de pruebas, use el método abreviado de teclado CTRL+R, A para desencadenar la detección de pruebas.

  • Haga doble clic en una prueba en el Explorador de pruebas para abrir el archivo de código fuente correspondiente en el editor:

    Captura de pantalla que muestra la vista predeterminada para una prueba en el Explorador de pruebas de Visual Studio 2022.

    Captura de pantalla que muestra la vista predeterminada para una prueba en el Explorador de pruebas.

  • Organice la vista de las pruebas mediante la opción Agrupar por en la barra de herramientas:

    Captura de pantalla que muestra cómo organizar la vista de pruebas en el Explorador de pruebas con la opción Agrupar por en Visual Studio 2022.

    Captura de pantalla que muestra cómo organizar la vista de pruebas en el Explorador de pruebas con la opción Agrupar por.

  • Filtrar pruebas por nombre escribiendo texto en el campo de Búsqueda:

    Captura de pantalla que muestra cómo filtrar la vista de pruebas en el Explorador de pruebas mediante el campo Buscar.

    Captura de pantalla que muestra cómo filtrar la vista de pruebas en el Explorador de pruebas mediante el campo Buscar.

  • Ejecute pruebas y vea el estado de la ejecución de pruebas, como se describe en la sección siguiente.

Para más información sobre el módulo unittest y las pruebas de escritura, vea la documentación de Python.

Run tests with Test Explorer (Ejecución de pruebas con el Explorador de pruebas)

En el Explorador de pruebas puede ejecutar pruebas de varias maneras:

  • Seleccione Ejecutar todo (pruebas en la vista) para ejecutar todas las pruebas que se muestran en la vista actual en función de la configuración del filtro.
  • Use los comandos del menú Ejecutar para ejecutar pruebas con error, superadas o no ejecutadas como un grupo.
  • Seleccione una o varias pruebas y haga clic con el botón derecho y seleccione la opción Ejecutar pruebas seleccionadas.

Visual Studio ejecuta las pruebas en segundo plano. El Explorador de pruebas actualiza el estado de todas las pruebas a medida que se completan:

  • Las pruebas superadas muestran una marca de verificación verde y el tiempo para completar la serie de pruebas:

    Captura de pantalla que muestra el estado de una prueba superada en el Explorador de pruebas en Visual Studio 2022.

    Captura de pantalla que muestra el estado de una prueba superada en el Explorador de pruebas.

  • Las pruebas con error muestran una cruz roja con un vínculo Salida que muestra la salida de la consola y la salida unittest de la serie de pruebas:

    Captura de pantalla que muestra el estado y los detalles del motivo de una prueba con errores en el Explorador de pruebas en Visual Studio 2022.

    Captura de pantalla en la que se muestra el estado para las pruebas con errores en el Explorador de pruebas.

    Captura de pantalla que muestra el motivo para una prueba con errores en el Explorador de pruebas.

Comprobación de las pruebas con el Depurador

Las pruebas unitarias son fragmentos de código que están sujetos a errores como cualquier otro código y, en ciertas ocasiones, necesitan ejecutarse en un depurador. En el Depurador de Visual Studio puede establecer puntos de interrupción, examinar variables y recorrer el código. Visual Studio también proporciona herramientas de diagnóstico para las pruebas unitarias.

Revise estos puntos sobre cómo comprobar las pruebas con el Depurador de Visual Studio:

  • De forma predeterminada, la depuración de pruebas usa el depurador debugpy para Visual Studio 2019 versión 16.5 y versiones posteriores. Algunas versiones anteriores de Visual Studio usan el depurador ptvsd 4. Si usa una versión anterior de Visual Studio y prefiere el depurador ptvsd 3, seleccione la opción Usar depurador heredado en Herramientas>Opciones>Python>Depuración.

  • Para iniciar la depuración, establezca un punto de interrupción inicial en el código y luego haga clic con el botón derecho en la prueba (o una selección) en el Explorador de pruebas y seleccione Depurar pruebas seleccionadas. Visual Studio inicia el depurador de Python como lo haría para el código de la aplicación.

    Captura de pantalla que muestra cómo depurar una prueba unitaria con el Depurador de Visual Studio 2022.

    Captura de pantalla que muestra cómo depurar una prueba unitaria con el Depurador de Visual Studio.

  • Si lo prefiere, puede usar Analizar cobertura de código para las pruebas seleccionadas. Para obtener más información, vea Usar cobertura de código para determinar la cantidad de código que se está probando.