DÍA 19Archivos y proyecto final · Python desde cero

Elige un archivo desde la terminal y comprueba una función con unittest.

Día 19 16 minInicial

Argumentos de consola y pruebas

Objetivos

Al terminar podrás explicar el concepto principal y adaptar el ejemplo a un caso sencillo.

Concepto

argparse lee opciones pasadas al ejecutar el programa, como --archivo datos.csv. unittest comprueba resultados esperados para funciones. Una prueba llama a la función con un caso conocido y compara el resultado, por ejemplo mediante assertEqual. Las pruebas cubren los casos que escribiste; no prueban por sí solas todas las situaciones posibles. Consulta la documentación oficial de argparse y la documentación oficial de unittest.

Ejemplo

import argparse
parser = argparse.ArgumentParser(description="Resume gastos.")
parser.add_argument("--archivo", default="gastos.csv")
args = parser.parse_args()
print(f"Archivo elegido: {args.archivo}")

py programa.py --archivo datos.csv imprime Archivo elegido: datos.csv. Puedes ejecutar pruebas con py -m unittest o python3 -m unittest.

Práctica guiada

Agrega una opción --ayuda implícita con argparse y crea una prueba para sumar [2, 3].

Reto

Añade el argumento --archivo a un lector CSV y prueba el total de dos filas.

Ver respuesta al reto
import argparse
import csv
from decimal import Decimal
 
parser = argparse.ArgumentParser()
parser.add_argument("--archivo", default="gastos.csv")
args = parser.parse_args()
 
with open(args.archivo, encoding="utf-8", newline="") as archivo:
    total = sum((Decimal(f["monto"]) for f in csv.DictReader(archivo)), Decimal("0"))
print(total)

Una prueba unitaria puede pasar dos filas con montos 2.50 y 3.00 a la función que calcula el total y comprobar que devuelve 5.50.

Quiz

1. ¿Qué permite argparse?
2. ¿Por qué usar csv.DictReader?
3. ¿Qué indica Path(__file__).parent?

Comprobación

Revisa que el ejemplo produzca el resultado esperado y prueba también un caso límite relacionado con la lección.

TU PROGRESO

Cargando estado…