Articles of prueba de unidad

¿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 ()

Burlándose de las llamadas de la super clase en Python

Estoy haciendo algunas pruebas de unidad y en algún momento necesito burlarme de una super llamada para lanzar un error, por ejemplo: @classmethod def myfunc(cls, *args, **kwargs) try: super(MyClass, cls).my_function(args, kwargs) except MyException as e: #… Estoy utilizando la biblioteca de mockers para burlar mis objetos en general, pero no he encontrado una manera de […]

Cómo usar Python Mock para generar una excepción, pero con Errno establecido en un valor determinado

Dado este código de Python: elif request.method == ‘DELETE’: try: os.remove(full_file) return jsonify({‘results’:’purged %s’ % full_file}) except OSError as e: if e.errno != errno.ENOENT: raise return jsonify({‘results’:’file not present: %s’ % full_file}) Quiero probar todas las rutas posibles, incluido el manejo de excepciones. Usando Mock, es bastante fácil lanzar una excepción, lo que hago con […]

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