Articles of burlándose

Cómo burlarse de un objeto / llamada boto3 cliente

Estoy tratando de burlarme de una función particular de boto3. Mi módulo, Limpieza, importa boto3. La limpieza también tiene una clase, “limpia”. Durante init, cleaner crea un cliente ec2: self.ec2_client = boto3.client(‘ec2’) Quiero burlarme del método del cliente ec2: desribe_tags (), que Python dice que es: <bound method EC2.describe_tags of > lo más lejos que […]

Burlarse de módulos importados en Python

Estoy intentando implementar pruebas unitarias para la función que utiliza objetos externos importados. Por ejemplo, helpers.py es: import os import pylons def some_func(arg): … var1 = os.path.exist(…) var2 = os.path.getmtime(…) var3 = pylons.request.environ[‘HTTP_HOST’] … Así que cuando estoy creando una prueba unitaria para ello, hago algunas burlas (minimock en mi caso) y sustituyo las referencias […]

¿Cómo pruebo un cliente API con Python?

Estoy trabajando en una biblioteca cliente para una API popular. Actualmente, todas mis pruebas unitarias de dicho cliente están realizando llamadas API reales contra una cuenta de prueba. Aquí hay un ejemplo: def test_get_foo_settings(self): client = MyCustomClient(token, account) results = client.get_foo_settings() assert_is(type(results), list) Me gustaría dejar de hacer llamadas API reales en mi cuenta de […]

Mock clase padre __init__ método

Estoy tratando de escribir algunas pruebas de unidad en una clase que se deriva de otra, pero tengo algunas dificultades para burlarme del método de inicio de clase padre, que afaik no se puede, así que estoy buscando una sugerencia. Aquí un ejemplo de cómo son mis clases. Importado.py class Imported(): def __init__(self, a=”I am […]

Cuando se usa unittest.mock.patch, ¿por qué autospec no es True de forma predeterminada?

Cuando parchea una función usando simulacro, tiene la opción de especificar autospec como Verdadero: Si establece autospec = Verdadero, la simulación se creará con una especificación del objeto que se está reemplazando. Todos los atributos del simulacro también tendrán la especificación del atributo correspondiente del objeto que se reemplaza. Los métodos y funciones que se […]

¿Qué marco simulado de objetos debo usar al desarrollar en Python en el motor de aplicaciones de Google?

Estoy desarrollando una aplicación en el motor de aplicaciones de Google usando Python (y Django, si eso importa). ¿Qué marco simulado de objetos debo ayudar para ayudar con las pruebas unitarias? Veo que hay una serie de proyectos independientes (por ejemplo, http://python-mock.sourceforge.net ), pero no estoy seguro de que haya algo integrado que pueda usar. […]

¿Cómo sabe @ mock.patch qué parámetro usar para cada objeto simulado?

Mirando esta página web: http://www.toptal.com/python/an-introduction-to-mocking-in-python – El autor habla sobre Mocking and Patching in Python y da un ejemplo bastante sólido del “mundo real” . La parte que me está haciendo tropezar es entender cómo el trabajo de marco de prueba de unidad sabe qué objeto simulado se pasa a qué parche. #!/usr/bin/env python # […]

Burlándose de una variable global

He estado intentando implementar algunas pruebas unitarias para un módulo. Un módulo de ejemplo llamado alphabet.py es el siguiente: import database def length_letters(): return len(letters) def contains_letter(letter): return True if letter in letters else False letters = database.get(‘letters’) # returns a list of letters Me gustaría burlarme de la respuesta de una base de datos […]

¿Cómo llamarse a sí mismo en un método simulado de un objeto en Python?

Intento probar algunos códigos que no devuelven nada pero guardan el resultado en la base de datos. Al burlarme del método de guardar, deseo comprobar si las cosas se han procesado correctamente: def mock_save(self): assert(self.attr, ‘dest_val’) with mock.patch.object(Item, “save”, create=True) as save: save.side_effect = mock_save func_to_call() //in func_to_call, I call item.save() Sin embargo, parece que […]

Comprobando si la función ha sido llamada varias veces con diferentes parámetros

Supongamos que tenemos una función f(x,y) y otra función def g(): # … f(i,j) # i,j vary and f is called multiple times # … Queremos escribir una prueba de unidad que verifique si f se llama el número de veces y con los parámetros correctos. def test_g(): with patch(‘mymodule.f’) as function: assert function.gacs.call_count == […]