Skip to content

T0. Herramientas

[Actualizado a 13 de octubre de 2026]

T0. Herramientas🔗

(Necesitamos introducir este RA como coordinación con el resto de módulos ya que NO podemos desarrollar este módulo sin sintaxis, por lo que impartimos parte del módulo de "Entornos y sistaxis en Python")

1. Control de versiones🔗

Emplearemos GIT.

2. Entornos virtuales🔗

Evitaremos conflictos entre las versiones de las dependencias con venv:

  1. Crear: python3 -m venv my-venv
  2. Cargar:
       # Linux / Mac
       source my-venv/bin/activate
    
       # Windows (PowerShell)
       my-venv\Scripts\Activate.ps1
    
       # Windows (cmd)
       my-venv\Scripts\activate.bat
    
  3. Desactivar: deactivate

Fuente: https://elpythonista.com.

3. Contenedores docker🔗

Aislamiento y distribución de aplicaciones con docker.

4. Estilos de codificación🔗

Para tener código legible en nuestro "equipo de trabajo" emplearemos Flake8.

Flake 8 es una herramienta de línea de comandos (command-line tool) que combina tres herramientas de verificación de código (code checking tools) populares en Python:

  • PyFlakes: Verifica la existencia de errores lógicos en tu código, como variables no utilizadas (unused variables) o nombres que no se encuentran (undefined names).
  • pycodestyle (anteriormente pep8): Asegura que tu código cumpla con las directrices de estilo del código Python, como se describe en la PEP 8 (Python Enhancement Proposal 8). Esto incluye cosas como la longitud de línea, el espaciado y la nomenclatura.
  • McCabe: Mide la complejidad ciclomática (cyclomatic complexity) de tu código. Un código con alta complejidad ciclomática tiende a ser más difícil de entender y probar.

Info

Código PYTHONICO: es aquel que aprovecha el lenguaje para producir código más legible.

Ver presentación

5. require o fetch API (Postman like)🔗

import requests

resp = requests.get('http://www.mywebsite.com/user')
resp = requests.post('http://www.mywebsite.com/user')
resp = requests.put('http://www.mywebsite.com/user/put')
resp = requests.delete('http://www.mywebsite.com/user/delete')

userdata = {"firstname": "John", "lastname": "Doe", "password": "jdoe123"}
resp = requests.post('http://www.mywebsite.com/user', data=userdata)

resp.json()
resp.text
Más info en readthedocs.io

También podéis profundizar analizando el Postman casero.

6. Test unitarios🔗

Antes de comenzar con framworks de test vamos a lo más básico, la sentencia assert.

Las afirmaciones o asserts son elementos que son siempre verdaderas o arrojarán una excepción.

Podemos probarlo con las 2 siguientes líneas:

assert True, "Mensaje de error 1"
assert False, "Mensaje de error 2"

Info

Aunque podemos omitir el mensaje de error assert False, perderemos información relevante.

(pytest o unittest) Tenemos 2 opciones excelentes:

Usaremos pytest si lo nuestro es la programación basada en funciones y unittest si nos encontramos cómodos con la POO, y en especial si ya hemos trabajado con frameworks de test como Junit para Java.

7. Jupyter Notebook🔗

  1. Para probarlo.
  2. Para algo más serio podemos montar nuestro propio Jupyter server.

Referencias:🔗

Professional Skills🔗

En esta unidad hemos trabajado las skills profesionales:

Version Control with Git🔗

  • git clone, init, add, commit, push, pull
  • Branching, merging, and resolving conflicts
  • GitHub workflow — pull requests and code reviews
  • Writing useful commit messages

Docker & Deployment Basics🔗

  • Qué es docker y porqué se utiliza
  • Corriendo run contendores con docker cli
  • Generando recetas compose.yml con docker compose
  • Creando imágenes con Dockerfile
  • Despleguando contenedores en la nube

Clean Code Habits🔗

  • PEP 8 style guide — formatting Python code correctly
  • Type hints and annotations (def greet(name: str) -> str:)
  • Docstrings and inline documentation
  • Refactoring — turning messy code into clean code

Testing🔗

  • Unit testing with pytest and unittest
  • Writing test cases, mocking dependencies
  • Code coverage reports
  • Test-driven development (TDD) mindset