paint-brush
Acelere el rendimiento de Pytest para obtener una calidad de código mejorada y comentarios más rápidospor@launchable
79,541 lecturas
79,541 lecturas

Acelere el rendimiento de Pytest para obtener una calidad de código mejorada y comentarios más rápidos

por Launchable7m2023/04/26
Read on Terminal Reader

Demasiado Largo; Para Leer

La elegancia y la simplicidad de Pytest hacen que escribir pruebas, afirmaciones, accesorios y complementos sea una experiencia perfecta para los desarrolladores. Sin embargo, como cualquier herramienta, tiene sus limitaciones. La integración de Launchable en su flujo de trabajo de prueba de pytest puede generar ahorros sustanciales de tiempo y recursos, lo que le permite acelerar el ciclo de desarrollo y entregar código de alta calidad de manera más eficiente. Explore ejemplos de código y pasos prácticos para una fácil integración de Pytest y Launchable para lanzamientos más rápidos sin sacrificar la calidad del código.
featured image - Acelere el rendimiento de Pytest para obtener una calidad de código mejorada y comentarios más rápidos
Launchable HackerNoon profile picture

Integración de la selección de pruebas predictivas de Launchable con Pytest

En el panorama en constante evolución del desarrollo de software, la necesidad de procesos de prueba escalables y efectivos nunca ha sido más crucial. A medida que crece la complejidad de las aplicaciones, se vuelve cada vez más desafiante mantener un flujo de trabajo de prueba rápido y confiable. Ingrese a pytest, un marco de prueba popular para Python que hace que escribir y organizar pruebas sea muy fácil para los desarrolladores.


Pero, ¿y si pudiéramos hacer pytest aún mejor?


Launchable aprovecha el aprendizaje automático para predecir qué pruebas tienen más probabilidades de detectar defectos potenciales , lo que reduce drásticamente el tiempo dedicado a ejecutar pruebas irrelevantes. Al combinar la simplicidad y la flexibilidad de pytest con las poderosas capacidades predictivas de Launchable, podrá lograr un nuevo nivel de eficiencia y precisión en las pruebas.


Sumérjase en los beneficios de usar pytest con la selección de prueba predictiva de Launchable, recorra el proceso de configuración y vea cómo estas herramientas pueden funcionar en armonía para revolucionar su flujo de trabajo de prueba. ¡Prepárese para transformar la forma en que prueba sus aplicaciones de Python!

Comprender los conceptos básicos de Pytest (con ejemplos prácticos de código): escribir pruebas, aserciones, accesorios y complementos en Pytest

La elegancia y la simplicidad de Pytest hacen que escribir pruebas, afirmaciones, accesorios y complementos sea una experiencia perfecta para los desarrolladores. Con su sintaxis intuitiva y sus potentes funciones, puede crear pruebas para todo tipo de pruebas de software que sean fáciles de entender y mantener. Exploremos estos conceptos con más detalle y veamos cómo se pueden utilizar en su flujo de trabajo de prueba.

Pruebas y aserciones de Pytest

Pytest le permite escribir funciones de prueba utilizando declaraciones estándar de afirmación de Python, lo que hace que sus pruebas sean limpias y legibles. Para crear una prueba, simplemente defina una función con un nombre que comience con test_ y use aserciones para verificar si se cumple el comportamiento esperado. Aquí hay un ejemplo simple:


 def add(a, b): return a + b def test_add(): assert add(2, 3) == 5 assert add(-1, 5) == 4 assert add(0, 0) == 0


Accesorios Pytest

Los accesorios en pytest brindan una forma conveniente de configurar y eliminar recursos reutilizables, como conexiones de bases de datos, archivos temporales o datos de prueba. Le ayudan a mantener un conjunto de pruebas limpio y modular. Para crear un accesorio, use el decorador @pytest.fixture que se muestra en el ejemplo a continuación.


 import pytest @pytest.fixture def sample_data(): return {"name": "John Doe", "age": 30} def test_sample_data(sample_data): assert sample_data["name"] == "John Doe" assert sample_data["age"] == 30


En el ejemplo anterior, el accesorio sample_data se pasa automáticamente a cualquier función de prueba que lo solicite como parámetro, lo que garantiza datos de prueba coherentes en todo el conjunto de pruebas.

Complementos Pytest

El sistema de complementos de Pytest le permite ampliar su funcionalidad o integrarlo con otras herramientas, haciéndolo aún más versátil. Puede usar complementos existentes o crear uno propio. Para instalar un complemento existente, use el administrador de paquetes pip. Por ejemplo, ejecute lo siguiente en su línea de comando para instalar el complemento pytest-cov.


pip install pytest-cov


Para crear un complemento personalizado, defina un nuevo módulo de python (llamado my_plugin_module en el ejemplo). A partir de ahí, registrará el módulo como punto de entrada en su archivo setup.py.


 # setup.py from setuptools import setup setup( ... entry_points={"pytest11": ["my_plugin = my_plugin_module"]}, ... )


Beneficios y limitaciones de Pytest

La prueba es un aspecto esencial del desarrollo de software, ya que garantiza que su código sea robusto, confiable y libre de errores. Pytest se ha convertido en una opción popular entre los desarrolladores de Python por su simplicidad, flexibilidad y potentes funciones. Sin embargo, como cualquier herramienta, tiene sus limitaciones.

Beneficios Pytest

  1. Fácil de usar: sintaxis simple, pruebas fáciles de escribir, automatización de pruebas: Pytest ofrece una sintaxis simple e intuitiva, lo que facilita la escritura de pruebas incluso para principiantes. Con su detección de pruebas integrada, pytest detecta y ejecuta automáticamente las pruebas, lo que ahorra tiempo y esfuerzo a los desarrolladores.


  2. Funciones integrales: pruebas parametrizadas, accesorios, aserciones: Pytest proporciona un conjunto de funciones potentes como pruebas parametrizadas, accesorios y capacidades de afirmación avanzadas que facilitan la escritura de pruebas integrales y mantenibles.


  3. Extensibilidad: complementos, capacidad de ampliar la funcionalidad: el sistema de complementos de Pytest permite a los desarrolladores ampliar su funcionalidad o integrarlo con otras herramientas, aumentando su versatilidad.


  4. Documentación completa: instrucciones y ejemplos fáciles de entender: la documentación bien organizada de Pytest proporciona instrucciones y ejemplos claros, lo que facilita que los desarrolladores aprendan y dominen el marco. La integración de Launchable para pytest está documentada con ejemplos de código ; esto puede ser útil a medida que comienza a usar pytest y Launchable.


  5. Compatibilidad multiplataforma: se ejecuta en Windows, Linux y MacOS: Pytest es compatible con varias plataformas, lo que significa que puede ejecutarse en varios sistemas operativos como Windows, Linux y MacOS, lo que garantiza una experiencia de prueba fluida.


  6. Soporte de la comunidad: acceso a una comunidad de usuarios grande y útil: Pytest cuenta con una comunidad grande y de apoyo, que es invaluable cuando se trata de solucionar problemas, compartir conocimientos y mantenerse actualizado con los últimos desarrollos.

Limitaciones de Pytest

A pesar de sus numerosos beneficios, pytest también tiene algunas limitaciones que los desarrolladores deberían considerar:


  1. Soporte limitado para lenguajes que no son Python: Pytest está diseñado con Python en mente, por lo que no tiene soporte extenso para otros lenguajes. Esto puede ser un problema si necesita probar código escrito en un lenguaje que no sea Python.


  2. Pruebas complejas difíciles de depurar: Pytest puede ser difícil de depurar cuando se trata de pruebas complejas. Esto puede ser especialmente desafiante si la prueba involucra múltiples componentes o requiere una comprensión profunda del código que se está probando.


  3. No siempre es adecuado para todos los proyectos: si bien pytest es excelente para las pruebas unitarias, es posible que no sea adecuado para todos los proyectos. Por ejemplo, si su proyecto requiere pruebas de integración o pruebas de extremo a extremo, es posible que pytest no sea la mejor opción.


La buena noticia es que no necesita ejecutar horas de complejos conjuntos de pruebas de integración si utiliza la selección de pruebas predictivas de Launchable.

Cómo funcionan juntos Launchable y Pytest

En el entorno de desarrollo acelerado de hoy, cada minuto cuenta. Las ejecuciones de prueba prolongadas pueden obstaculizar la productividad, retrasar las implementaciones, deteriorar la experiencia del desarrollador y aumentar los costos. Afortunadamente, con la integración de pytest de Launchable, puede aprovechar el poder de la selección de prueba predictiva para optimizar su flujo de trabajo de prueba, acelerar sus pruebas y mejorar su experiencia de desarrollador.


Launchable, la plataforma de inteligencia de pruebas, utiliza el aprendizaje automático para predecir qué pruebas tienen más probabilidades de detectar defectos potenciales. Con la integración de pytest de Launchable, puede priorizar la ejecución de las pruebas más relevantes, ahorrando valiosas horas de máquina y brindando comentarios más rápidos a los desarrolladores.


Agregar Launchable a pytest permite a los desarrolladores y equipos de DevOps:


  1. Tiempo de ejecución de prueba reducido : al ejecutar solo las pruebas más relevantes, puede reducir significativamente el tiempo dedicado a la ejecución de la prueba, lo que permite iteraciones e implementaciones más rápidas.


  2. Utilización de recursos optimizada : la selección inteligente de pruebas de Launchable garantiza que sus recursos informáticos se utilicen de manera eficiente, lo que reduce el costo total de las pruebas y libera recursos para otras tareas.


  3. Mayor confiabilidad del conjunto de pruebas: al priorizar las pruebas con mayor probabilidad de detectar defectos, puede detectar y solucionar problemas al principio del ciclo de desarrollo, mejorando la calidad y confiabilidad general de su base de código.

Tutorial práctico para Pytest y Launchable

Para comenzar con el complemento pytest Launchable, se necesitan cuatro pasos simples.


✅ Instale el complemento Pytest ejecutable

Instale el complemento pytest ejecutable: pip3 install pytest-launchable


✅ Establezca su clave de API ejecutable

Regístrese para obtener una cuenta de Launchable (si aún no lo ha hecho) en https://app.launchableinc.com/signup/ y cree su clave de API. Exporte su clave como una variable de entorno en su script de CI: export LAUNCHABLE_TOKEN=<your_launchable_api_key>

Guarde esta clave en un lugar seguro; evite dejarla en su código fuente para que todos la vean.


✅ Registre y envíe datos de prueba a Launchable:

Antes de que Launchable pueda predecir qué pruebas ejecutar, necesita datos de prueba históricos. Para registrar y enviar datos de prueba, configure su configuración ejecutable.

Puede generar una configuración ejecutable ejecutando a través de pip: launchable-config --create , o puede copiar este ejemplo en un nuevo archivo llamado .launchable.d/config.yml :


 # Launchable test session configuration file # See https://docs.launchableinc.com/resources/cli-reference for detailed usage of these options # schema-version: 1.0 build-name: commit_hash record-build: # Put your git repository location here source: . max_days: 30 record-session: subset: # mode can be subset, subset-and-rest, or record-only mode: record-only # if mode is subset or subset-and-rest, you must specify one of target/confidence/time # examples: # target: 30% # Create a variable time-based subset of the given percentage. (0%-100%) # confidence: 30% # Create a confidence-based subset of the given percentage. (0%-100%) # time: 30m # Create a fixed time-based subset. Select the best set of tests that run within the given time bound. (eg 10m for 10 minutes, 2h30m for 2.5 hours, 1w3d for 7+3=10 days. ) confidence: 99 record-tests: # The test results are placed here in JUnit XML format result_dir: launchable-test-result


✅ Habilitar selección de prueba predictiva:

Una vez que haya enviado suficientes datos de prueba, puede comenzar a usar la selección de prueba predictiva de Launchable.


Todo lo que necesita hacer es actualizar su archivo config.yml . Cambie el mode subset a subset , establezca un objetivo de optimización (uno de target , time o confidence ) y guarde el archivo. Esto habilita la creación de subconjuntos cuando ejecuta pytest --launchable .


¡Fácil guisante, exprimido de limón!


Launchable luego seleccionará las pruebas más críticas y relevantes, optimizando su flujo de trabajo de prueba y brindando comentarios más rápidos a su equipo de desarrollo.


Para obtener documentación completa, consulte pytest (Integración) | Documentos ejecutables .


Comentarios finales sobre Pytest y selección de pruebas predictivas

La integración de Launchable en su flujo de trabajo de prueba de pytest puede generar ahorros sustanciales de tiempo y recursos, lo que le permite acelerar el ciclo de desarrollo y entregar código de alta calidad de manera más eficiente.


Al priorizar las pruebas más relevantes, no solo ahorrará horas de máquina, sino que también permitirá que su equipo de desarrollo reciba comentarios más rápido , lo que conducirá a una resolución de problemas más rápida y mejorará la calidad general del código.



También publicado aquí.