Articles of prueba de unidad

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

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

Python simula múltiples valores de retorno

Estoy usando pythons mock.patch y me gustaría cambiar el valor de retorno para cada llamada. Aquí está la advertencia: la función que se está parchando no tiene entradas, por lo que no puedo cambiar el valor de retorno según la entrada. Aquí está mi código de referencia. def get_boolean_response(): response = io.prompt(‘y/n’).lower() while response not […]

¿Puedo “falsificar” un paquete (o al menos un módulo) en python para realizar pruebas?

Quiero falsificar un paquete en python. Quiero definir algo para que el código pueda hacer. from somefakepackage.morefakestuff import somethingfake Y algún paquete de paquetes está definido en el código y también lo está todo debajo de él. ¿Es eso posible? La razón para hacer esto es engañar a mi prueba de unidad de que obtuve […]

Objeto simulado de Python con método llamado varias veces

Tengo una clase que estoy probando, la cual tiene como dependencia a otra clase (una instancia de la cual se pasa al método init de CUT). Quiero burlarme de esta clase usando la biblioteca de Python Mock. Lo que tengo es algo como: mockobj = Mock(spec=MyDependencyClass) mockobj.methodfromdepclass.return_value = “the value I want the mock to […]

Función simulada open () utilizada en un método de clase

Intenté burlarme de la función abierta utilizada en un método de mi clase. Encontré este hilo ¿Cómo me burlo de un abierto usado en una statement with (usando el framework Mock en Python)? pero no pude resolver mi problema. Además, la documentación de unittest muestra una solución que tampoco se burlaba de mi https://docs.python.org/3/library/unittest.mock-examples.html#patch-decorators Esta […]

Burlándose de una clase: ¿Simulacro () o parche ()?

Estoy usando simulacro con Python y me preguntaba cuál de esos dos enfoques es mejor (lea: más pythonic). Método uno : Simplemente crea un objeto simulado y úsalo. El código se ve como: def test_one (self): mock = Mock() mock.method.return_value = True self.sut.something(mock) # This should called mock.method and checks the result. self.assertTrue(mock.method.called) Método dos […]