Escribe scripts con Pytest que verifiquen que futuras modificaciones en tu código no rompan la lógica del negocio.
Write Pytest scripts that verify future code changes do not break business logic.
Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.
This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.
Crear una función de limpieza y una prueba unitaria que valide el resultado esperado antes de mover cambios.
Create a cleaning function and a unit test that validates the expected result before moving changes forward.
| input | expected |
|---|---|
| $1,500.50 | 1500.50 |
| 250 | 250.00 |
| N/A | None |
import pytest
# Terminal: pytest test_limpieza.py
def test_limpiar_moneda():
assert limpiar_precio("$1,500.50") == 1500.50| test | result |
|---|---|
| test_limpiar_moneda | passed |
| test_blank_value | passed |
# ==========================================================
# Python Advanced Topic 18
# Unit Tests for Data Cleaning with Pytest
# ==========================================================
# pip install pytest
# Save this file as: test_limpieza.py
def limpiar_precio(valor):
if valor is None:
return None
texto = str(valor).strip()
if texto in ["", "N/A", "NA"]:
return None
texto = texto.replace("$", "").replace(",", "")
return float(texto)
def test_limpiar_moneda():
assert limpiar_precio("$1,500.50") == 1500.50
def test_limpiar_espacios():
assert limpiar_precio(" 250 ") == 250.00
def test_limpiar_nulos():
assert limpiar_precio("N/A") is None
# Terminal:
# pytest test_limpieza.py============================= test session starts ============================= collected 3 items test_limpieza.py ... [100%] ============================== 3 passed in 0.02s ==============================
Las pruebas unitarias convierten reglas de limpieza en garantías repetibles y reducen el riesgo de romper procesos existentes.
Unit tests turn cleaning rules into repeatable guarantees and reduce the risk of breaking existing processes.