Articles of burlándose

Burlándose de urllib2.urlopen (). Read () para respuestas diferentes

Estoy tratando de burlarme de la biblioteca urllib2.urlopen de una manera que debería obtener respuestas diferentes para las diferentes URL que paso a la función. La forma en que lo estoy haciendo en mi archivo de prueba ahora es así @patch(othermodule.urllib2.urlopen) def mytest(self, mock_of_urllib2_urllopen): a = Mock() a.read.side_effect = [“response1”, “response2”] mock_of_urllib2_urlopen.return_value = a othermodule.function_to_be_tested() […]

Burlándose de una llamada de subproceso en Python

Tengo un método ( run_script ) que me gustaría probar. Específicamente quiero probar que ocurre una llamada a subprocess.Popen . Sería incluso mejor probar que subprocess.Popen se llama con ciertos parámetros. Cuando ejecuto la prueba, sin embargo, obtengo TypeError: ‘tuple’ object is not callable . ¿Cómo puedo probar mi método para asegurarme de que en […]

Cómo burlarse de un método SendGrid en Python

Estoy tratando de burlarme del método SendGrid dentro de mi función de vista de Flask, para que no envíe un correo electrónico durante la prueba. Cuando ejecuto el siguiente código, aparece un error ‘ImportError: No hay módulo llamado sg’. ¿Cómo puedo configurar correctamente el método ‘sg’ para que se encuentre en las pruebas? # test_helpers.py […]

UnitTest Python simula solo una función llamada múltiple

Estoy usando Mock ( http://www.voidspace.org.uk/python/mock/mock.html ), y encontré un caso falso en particular que no puedo encontrar la solución. Tengo una función con varias llamadas a some_function que se está burlando. def function(): some_function(1) some_function(2) some_function(3) Solo quiero burlarme de la primera y tercera llamada a some_function. La segunda llamada que quiero que se haga […]

isinstance y burla

class HelloWorld(object): def say_it(self): return ‘Hello I am Hello World’ def i_call_hello_world(hw_obj): print ‘here… check type: %s’ %type(HelloWorld) if isinstance(hw_obj, HelloWorld): print hw_obj.say_it() from mock import patch, MagicMock import unittest class TestInstance(unittest.TestCase): @patch(‘__main__.HelloWorld’, spec=HelloWorld) def test_mock(self,MK): print type(MK) MK.say_it.return_value = ‘I am fake’ v = i_call_hello_world(MK) print v if __name__ == ‘__main__’: c = HelloWorld() […]

Afirmando sucesivas llamadas a un método simulado.

Mock tiene un útil método assert_called_with() . Sin embargo, hasta donde entiendo, esto solo verifica la última llamada a un método. Si tengo un código que llama al método simulado 3 veces sucesivamente, cada vez con diferentes parámetros, ¿cómo puedo afirmar estas 3 llamadas con sus parámetros específicos?

Mocking __init __ () para unittesting

Tengo una clase: class DatabaseThing(): def __init__(self, dbName, user, password): self.connection = ibm_db_dbi.connect(dbName, user, password) Quiero probar esta clase pero con una base de datos de prueba. Así que en mi clase de prueba soy algo como esto: import sqlite3 as lite import unittest from DatabaseThing import * class DatabaseThingTestCase(unittest.TestCase): def setUp(self): self.connection = lite.connect(“:memory:”) […]

Cómo simular una clase base con Python Mock Library

Intento usar mock para escribir algunas pruebas unitarias en Python. Por ejemplo tengo la siguiente clase: class TCPHandler(socketserver.BaseRequestHandler): def handle(self): self.data = self.request.recv(1024).strip() Y solo quiero probar el método del handle . Sin tener que asumir nada sobre socketserver.BaseRequestHandler . Por ejemplo, quiero afirmar que el handle llamadas recv con el argumento 1024 . ¿Es […]

Python: burlándose de un administrador de contexto

No entiendo por qué no puedo simular NamedTemporaryFile.name en este ejemplo: from mock import Mock, patch import unittest import tempfile def myfunc(): with tempfile.NamedTemporaryFile() as mytmp: return mytmp.name class TestMock(unittest.TestCase): @patch(‘tempfile.NamedTemporaryFile’) def test_cm(self, mock_tmp): mytmpname = ‘abcde’ mock_tmp.__enter__.return_value.name = mytmpname self.assertEqual(myfunc(), mytmpname) Resultados de la prueba en: AssertionError: != ‘abcde’

Mock vs MagicMock

Mi entendimiento es que MagicMock es un superconjunto de Mock que realiza automáticamente “métodos mágicos”, por lo que proporciona un soporte sin problemas para listas, iteraciones, etc. Entonces, ¿cuál es la razón por la cual Mock existe? ¿No es solo una versión simplificada de MagicMock que puede ser prácticamente ignorada? ¿ La clase Mock conoce […]