Introducción
La depuración y las pruebas son componentes cruciales del desarrollo de software fiable. Una depuración eficaz le ayuda a identificar y solucionar rápidamente los problemas, mientras que unas pruebas unitarias robustas garantizan que su código se comporte como se espera a medida que evoluciona. En este tutorial, exploramos técnicas prácticas para la depuración y las pruebas unitarias tanto en Python como en R. Tanto si está trabajando en un proyecto de ciencia de datos como si está creando una aplicación de producción, estas prácticas recomendadas le ayudarán a escribir un código más limpio y fiable.
Técnicas de depuración
Depuración interactiva con pdb:
El depurador integrado de Python,pdb
, le permite pausar la ejecución del código e inspeccionar las variables de forma interactiva.
Ejemplo:#| label: python-pdb-example import pdb def divide(a, b): # Empezar a depurar aquí pdb.set_trace() return a / b = divide(10, 2) result print("Result:", result)
Usar depuradores IDE:
Herramientas como VS Code y PyCharm proporcionan herramientas de depuración gráficas, que permiten establecer puntos de interrupción, ejecutar paso a paso e inspeccionar variables.Registro:
Incorpore el módulologging
para registrar eventos y errores, lo que resulta útil para la depuración post mortem.#| label: python-logging import logging =logging.INFO) logging.basicConfig(level"This is an info message.") logging.info("This is an error message.") logging.error(
Uso de traceback() y debug():
La funcióntraceback()
de R se puede utilizar inmediatamente después de un error para mostrar la pila de llamadas. Además,debug()
se puede aplicar a las funciones para recorrer el código de forma interactiva.#| label: r-debugging <- function(x) { buggy_function stop("An unexpected error occurred!") }tryCatch( buggy_function(10), error = function(e) { traceback() message("Error caught: ", e$message) } )
Depurador de RStudio:
RStudio proporciona un depurador integrado en el que puede establecer puntos de interrupción, inspeccionar variables y recorrer el código paso a paso.Registro y mensajes:
Utilice las funcionesmessage()
ycat()
para generar información de diagnóstico durante la ejecución del código.
Mejores prácticas de pruebas unitarias
Uso de pytest:
El marcopytest
facilita la escritura de pruebas sencillas para su código.#| label: python-pytest-example def add(a, b): return a + b def test_add(): assert add(2, 3) == 5 assert add(-1, 1) == 0 if __name__ == "__main__": import pytest __file__]) pytest.main([
Desarrollo basado en pruebas (TDD):
Escribe pruebas antes de implementar funciones para asegurarte de que tu código cumple los requisitos desde el principio.
Uso de testthat:
El paquetetestthat
proporciona un marco robusto para escribir pruebas unitarias en R.#| label: r-testthat-example library(testthat) <- function(a, b) { add + b a } test_that("add function works correctly", { expect_equal(add(2, 3), 5) expect_equal(add(-1, 1), 0) })
Integra las pruebas en tu flujo de trabajo:
Ejecuta pruebas con regularidad para detectar errores a tiempo. RStudio facilita la ejecución de pruebas con soporte integrado para testthat.
Conclusión
La depuración y las pruebas eficaces son fundamentales para mantener un código fiable y de alta calidad. Al aprovechar herramientas como pdb
y logging de Python, junto con traceback y testthat
de R, puede optimizar su proceso de desarrollo y detectar problemas de forma temprana. La incorporación de una estrategia de pruebas sólida, ya sea a través de pytest en Python o testthat en R, garantiza que tu código siga siendo fácil de mantener y libre de errores a medida que evoluciona.
Lecturas adicionales
- Escribir código limpio: mejores prácticas para software fácil de mantener
- Técnicas de optimización del rendimiento
- Control de versiones con Git y GitHub
Feliz programación, y que tus sesiones de depuración sean rápidas y tus pruebas pasen de forma fiable!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Depuración y pruebas en Python y R},
date = {2024-02-14},
url = {https://www.datanovia.com/es/learn/programming/best-practices/debugging-and-testing.html},
langid = {es}
}