Articles of burlándose

¿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.

¿Cómo me burlo de un controlador de señal django?

Tengo un signal_handler conectado a través de un decorador, algo así como este muy simple: @receiver(post_save, sender=User, dispatch_uid=’myfile.signal_handler_post_save_user’) def signal_handler_post_save_user(sender, *args, **kwargs): # do stuff Lo que quiero hacer es burlarse de ella con la biblioteca simulada http://www.voidspace.org.uk/python/mock/ en una prueba, para verificar cuántas veces lo llama Django. Mi código en este momento es algo […]

Python: errores de parche simulado con el matraz

Soy un novato cuando se trata de escribir Python, y mucho menos probarlo. Aquí está mi punto final Frasco: @blueprint.route(‘/mailing_finish///’, methods=[‘POST’]) def mailing_finish(account_id, sumll_stream_id): “”” Get Response for mailing_id and update Dataset: * MYEMMA_EMAIL_SENDS: response[‘sent’] “”” # TODO: webhook does not fire data = json.loads(request.data)[‘data’] access_token = sumll_redis.get_oauth_token(account_id) response_data = sumll_audience.get_response_data( access_token=access_token, account_id=account_id, mailing_id=data[‘mailing_id’], ) […]

simulacro de python – parcheando un método sin obstruir la implementación

¿Existe una forma limpia de parchear un objeto para que obtenga los ayudantes assert_call* en su caso de prueba, sin eliminar realmente la acción? Por ejemplo, ¿cómo puedo modificar la línea @patch para obtener el siguiente paso de prueba: from unittest import TestCase from mock import patch class Potato(object): def foo(self, n): return self.bar(n) def […]

¿Cómo simular llamadas a funciones que reciben objetos mutables como parámetros?

Considere el ejemplo: def func_b(a): print a def func_a(): a = [-1] for i in xrange(0, 2): a[0] = i func_b(a) Y prueba la función que intenta probar func_a y mocks func_b: import mock from mock import call def test_a(): from dataTransform.test import func_a with mock.patch(‘dataTransform.test.func_b’, autospec=True) as func_b_mock: func_a() func_b_mock.assert_has_calls([call(0), call(1)]) Después de que […]

¿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 […]

¿Por qué el parche simulado de python no funciona?

Tengo dos archivos spike.py class T1(object): def foo(self, afd): return “foo” def get_foo(self): return self.foo(1) def bar(): return “bar” test_spike.py: from unittest import TestCase import unittest from mock import patch, MagicMock from spike import T1, bar class TestStuff(TestCase): @patch(‘spike.T1.foo’, MagicMock(return_value=’patched’)) def test_foo(self): foo = T1().get_foo() self.assertEqual(‘patched’, foo) @patch(‘spike.bar’) def test_bar(self, mock_obj): mock_obj.return_value = ‘patched’ bar […]

burlándose de subproceso.Popen dependiente del estilo de importación

Al intentar burlarse de Popen solo puedo lograr que tenga éxito si la importación de subprocesos coincide con el código de prueba de la unidad y el código del módulo principal. Dado el siguiente listdir.py módulo: from subprocess import Popen, PIPE def listdir(dir): cmd = [‘ls’, dir] pc = Popen(cmd, stdout=PIPE, stderr=PIPE) out, err = […]

Funciones de burla usando Python Mock

Estoy intentando simular una función (que devuelve algo de contenido externo) utilizando el módulo simulado de python (http://www.voidspace.org.uk/python/mock/index.html). Estoy teniendo algunos problemas con las funciones de burla que se importan a un módulo. Por ejemplo, en util.py tengo def get_content(): return “stuff” Quiero burlar util.get_content para que devuelva algo más. Estoy intentando esto: util.get_content=Mock(return_value=”mocked stuff”) […]

Usando el parche simulado para simular un método de instancia

Estoy tratando de burlarme de algo al probar una aplicación de Django usando la biblioteca de pruebas simulada, llamada imaginativamente. Parece que no puedo hacerlo funcionar, estoy tratando de hacer esto: models.py from somelib import FooClass class Promotion(models.Model): foo = models.ForeignKey(FooClass) def bar(self): print “Do something I don’t want!” test.py class ViewsDoSomething(TestCase): view = ‘my_app.views.do_something’ […]