# Mocking de una función en tests de Python **Published by:** [Marco Richetta](https://paragraph.com/@marco-richetta/) **Published on:** 2021-11-02 **URL:** https://paragraph.com/@marco-richetta/mocking-de-una-funci-n-en-tests-de-python ## Content Recursos https://realpython.com/python-mock-library/ https://gist.github.com/evansde77/45467f5a7af84d2a2d34f3fcb357449c https://aaronlelevier.github.io/python-unit-testing-with-magicmock/ Suponiendo que existe una función get_github_profile en services.py import requests def get_github_profile(user_id: int): """ Obtener datos de un usuario de Github """ headers = {"accept": "application/vnd.github.v3+json"} response = requests.get(f"https://api.github.com/users/{user_id}", headers=headers) user = response.json() return user["name"] Si hacemos un test que ejecute 100 veces esta función, encontraremos 2 problemas: Las requests HTTP a una API externa son lentas. Posiblemente alcancemos un límite de requests muy rápidamente. En estos casos podemos mockear esa request a la API externa. def test_get_github_profile(self): with patch('requests.get') as mock_request: # A partir de acá `requests.get` es nuestro mock y podemos # modificar su comportamiento como queramos # Set del valor que va a devolver nuestra request "fake" mock_request.return_value = {"user_id": 150, "name": "Katie"} result = get_github_profile(user_id=150) assert result == "Katie" ## Publication Information - [Marco Richetta](https://paragraph.com/@marco-richetta/): Publication homepage - [All Posts](https://paragraph.com/@marco-richetta/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@marco-richetta): Subscribe to updates