Mocking con Python
Maricela
- He
trabajado endesarrollo de APIs - Co-
organizadora de PyMX - Co-
organizadora de PythonDay México - Co-
organizadora de PyConCharlas - Co-
organizadora de RustMX -
Directora en WWCode CDMX
¿Qué es un el mocking?
Es la acción de reemplazar partes de tu sistema por objetos que imitan el comportamiento de dicha parte.
?
class Calculator:
def sum(self, a, b):
return a + b
from unittest import TestCase
from main import Calculator
class TestCalculator(TestCase):
def setUp(self):
self.calc = Calculator()
def test_sum(self):
answer = self.calc.sum(2, 4)
self.assertEqual(answer, 6)
import time
class Calculator:
def sum(self, a, b):
time.sleep(10)
return a + b
from unittest import TestCase
from unittest.mock import patch
class TestCalculator(TestCase):
@patch('main.Calculator.sum', return_value=9)
def test_sum(self, sum):
self.assertEqual(sum(2,3), 9)
Otro ejemplo
import requests
class Blog:
def __init__(self, name):
self.name = name
def posts(self):
response = requests.get("https://jsonplaceholder.typicode.com/posts")
return response.json()
def __repr__(self):
return '<Blog: {}>'.format(self.name)
from unittest import TestCase
from unittest.mock import patch, Mock
class TestBlog(TestCase):
@patch('main.Blog')
def test_blog_posts(self):
blog = Mock()
blog.posts.return_value = [
{
'userId': 1,
'id': 1,
'title': 'Test Title',
'body': 'Body content'
}
]
response = blog.posts()
self.assertIsNotNone(response)
self.assertIsInstance(response[0], dict)
¿Por qué usar mocking?
- Incrementar la
velocidad delos tests - Evitar
efectos secundarios - Pruebas
aisladas
¿Preguntas?
Title Text
@mayela0x14
Mocking with Python
By Maricela Sanchez
Mocking with Python
- 681