Articles of prueba de unidad

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() […]

Envuelve un flujo abierto con io.TextIOWrapper

¿Cómo puedo envolver un flujo binario abierto – un file Python 2, un io.BufferedReader Python 3, un io.BytesIO – en un io.TextIOWrapper ? Estoy tratando de escribir código que funcione sin cambios: Corriendo en Python 2. Corriendo en Python 3. Con flujos binarios generados desde la biblioteca estándar (es decir, no puedo controlar qué tipo […]

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() […]

Afirmar una función / método no fue llamado usando Mock

Estoy usando la biblioteca Mock para probar mi aplicación, pero quiero afirmar que no se ha llamado a alguna función. Los mock.assert_called_with mock.assert_called_once_with hablan de métodos como mock.assert_called_with y mock.assert_called_once_with , pero no encontré nada como mock.assert_not_called o algo relacionado para verificar que el simulacro NO fue llamado . Podría ir con algo como lo […]

¿Puedo falsificar / simular el tipo de mis objetos simulados en pruebas de unidad de python?

En mi código de Python, reviso el tipo de uno de los parámetros para asegurarme de que sea del tipo que espero. Por ejemplo: def myfunction(dbConnection): if (type(dbConnection)bpgsql.Connection): r[‘error’] += ‘ invalid database connection’ Quiero pasar una conexión simulada para propósitos de prueba. ¿Hay alguna manera de hacer que el objeto simulado sea del tipo […]

¿Cómo burlarse de una propiedad de sólo lectura con simulacro?

¿Cómo te burlas de una propiedad de sólo lectura con simulacro ? Lo intenté: setattr(obj.__class__, ‘property_to_be_mocked’, mock.Mock()) pero el problema es que luego se aplica a todas las instancias de la clase … lo que rompe mis pruebas. ¿Tiene usted alguna otra idea? No quiero burlarme del objeto completo, solo de esta propiedad específica.

Mejor manera de simular atributos de clase en la prueba unitaria de python

Tengo una clase base que define un atributo de clase y algunas clases secundarias que dependen de él, por ejemplo, class Base(object): assignment = dict(a=1, b=2, c=3) Quiero hacer una prueba de unidad de esta clase con diferentes asignaciones , por ejemplo, diccionario vacío, solo elemento, etc. Esto es extremadamente simplificado, por supuesto, no es […]

Unidad de prueba de una aplicación de python que utiliza la biblioteca de solicitudes

Estoy escribiendo una aplicación que realiza operaciones REST utilizando la biblioteca de solicitudes de Kenneth Reitz y me cuesta encontrar una forma agradable de probar estas aplicaciones por unidades, ya que las solicitudes proporcionan sus métodos a través de métodos a nivel de módulo. Lo que quiero es la capacidad de sintetizar la conversación entre […]

¿Cómo nos aseguramos de que las llamadas en Mock.call_args_list contengan llamadas con argumentos en el mismo estado en que se llamó al objeto Mock?

from mock import Mock j = [] u = Mock() u(j) # At this point u.call_args_list == [call([])] print u.call_args_list j.append(100) # At this point u.call_args_list == [call([100])], but I expect it to be [call([])], since it was never called when j had a value of 100 in it print u.call_args_list Mi pregunta es ¿cómo […]