Articles of prueba de unidad

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

Python: Creando un directorio falso o falso con archivos para probar la unidad

Estoy tratando de crear una prueba unitaria para la siguiente función: def my_function(path): #Search files at the given path for file in os.listdir(path): if file.endswith(“.json”): #Search for file i’m looking for if file == “file_im_looking_for.json”: #Open file os.chdir(path) json_file=json.load(open(file)) print json_file[“name”] Sin embargo, estoy teniendo problemas para crear un directorio falso con archivos para que […]

¿Cómo hago la prueba unitaria de Django Views?

Quiero comenzar a integrar las pruebas unitarias en mis proyectos de Django y descubrí que la prueba de una vista es complicada debido a la forma en que Django implementa vistas con funciones. Por ejemplo, cada función es una vista / página en Django si la función tiene una URL. ¿Cómo hago la prueba unitaria […]

Burlarse de un método de clase que se utiliza a través de una instancia

Estoy tratando de parchear un método de clase usando simulacro como se describe en la documentación . El objeto Mock en sí mismo funciona bien, pero sus métodos no: por ejemplo, sus atributos como call_count no se actualizan, a pesar de que el atributo method_calls del objeto Mock clase sí lo está. Más importante aún, […]

¿Cuál es la diferencia entre mock.patch.object (… y mock.patch (

Estoy tratando de entender la diferencia entre estos dos enfoques de burlarse de un método. ¿Alguien podría ayudar a distinguirlos? Para este ejemplo, yo uso la biblioteca passlib. from passlib.context import CryptContext from unittest import mock with mock.patch.object(CryptContext, ‘verify’, return_value=True) as foo1: mycc = CryptContext(schemes=’bcrypt_sha256′) mypass = mycc.encrypt(‘test’) assert mycc.verify(‘tesssst’, mypass) with mock.patch(‘passlib.context.CryptContext.verify’, return_value=True) as […]

Python se burla de no hacer llamadas

Estoy usando la biblioteca simulada para parchear una clase en un progtwig que se conecta a un recurso externo y envía una dictadura. La estructura va un poco como esta … code.py def make_connection(): connection = OriginalClass(host, port) connection.connect() connection.send(param) connection.close() test.py @mock.path(‘code.OriginalClass’) def test_connection(self, mocked_conn): code.make_connection() mocked_conn.assert_called_with(host, port) mocked_conn.connect.assert_called_once() mocked_conn.send.assert_called_with(param) El primer assert_called_with funciona […]

Python Unit Testing con dos objetos simulados, ¿cómo verificar el orden de las llamadas?

Estoy escribiendo una clase que organiza dos instrumentos (una unidad de fuente de alimentación controlable a distancia y un controlador de bus usado para controlar el dispositivo bajo prueba) para realizar todo tipo de mediciones en un dispositivo bajo prueba (DUT). El acceso a ambos instrumentos se implementa como clases de Python y una referencia […]

burlándose de una conexión de socket en Python

Estoy tratando de escribir pruebas unitarias para una clase en python. La clase abre un socket TCP en init . Estoy intentando burlarme de esto para poder afirmar que la conexión se realiza con los valores correctos, pero obviamente no sucede en las pruebas unitarias. Me he cansado de MagicMock, parche, etc. pero no he […]

¿Cómo mover el mock.patch a la configuración?

Tengo las siguientes dos pruebas unitarias: @mock.patch(‘news.resources.generator.Generator.get_header’) @mock.patch(‘news.scraper.bbc_spider.BBCSpider.save_scraped_rss_into_news_model’) @mock.patch(‘news.scraper.bbc_spider.BBCSpider.get_news_urls’) @mock.patch(‘requests.get’) def test_get_header_is_called(self, req_get, spi_news, spi_save_rss, get_head): spi_news.return_value = {‘x’: 1} gen = Generator() gen.get() get_head.assert_called_with() @mock.patch(‘news.resources.generator.Generator.get_header’) @mock.patch(‘news.scraper.bbc_spider.BBCSpider.save_scraped_rss_into_news_model’) @mock.patch(‘news.scraper.bbc_spider.BBCSpider.get_news_urls’) @mock.patch(‘requests.get’) def test_task_url_is_save_scraped_rss_into_news_model(self, req_get, spi_news, spi_save_rss, get_head): spi_news.return_value = {‘x’: 1} gen = Generator() gen.get() tasks = self.taskqueue_stub.GetTasks(“newstasks”) self.assertEqual(tasks[0][‘url’], ‘/v1/worker/save-scraped-rss-into-news-model’) Como puedes ver hay mucha repetición de […]

Python: ¿Cómo me burlo de datetime.utcnow ()?

Tengo el siguiente: from datetime import datetime def get_report_month_key(): month_for_report = datetime.utcnow() return month_for_report.strftime(“%Y%m”) ¿Cómo me burlo de datetime.utcnow () para poder escribir la prueba unitaria en esta función? Intenté leer esto pero no puedo hacer que funcione para mí en utcnow ()