[pyar] problema con unittest + nose

Matias Graña matias.alejo en gmail.com
Mie Mayo 21 16:02:08 ART 2014


Martín, Daniel: gracias! Cualquiera de esas variantes hace todo mucho más
limpio.

-- Matías Graña


2014-05-21 15:41 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:

> Mi forma preferida de hacer eso es:
>
> with mock.patch('common.g') as mock_g:
>     common.f()
>     mock_g.assertCalledWith(42)
>
> el with te aplica el parche localmente y te lo saca al final del test, no
> necesitar estar metiendo reloads.
>
>
>
>
> 2014-05-21 15:33 GMT-03:00 Matias Graña <matias.alejo en gmail.com>:
>
>>
>>
>> 2014-05-21 10:08 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:
>>
>> El problema que tenés acá es un combinación de 2 cosas:
>>>  * al hacer reload, el modulo se ejecuta nuevamente, y se define una
>>> nueva clase de exceepcion, si bien el nombre y la definicion de la clase
>>> son iguales, no es la misma identidad (son gemelas en vez de ser la misma).
>>>  * La definición de CommonTests se evalúa una sola vez. En particular,
>>> el argumento del decorador @raises se evalua solo en el momento en que se
>>> carga tu modulo tests.py por primera vez
>>>
>>
>> Excelente explicación! :)
>> Ahora ya entiendo qué pasa. Y eso me deja dos dudas nuevas
>> (lamentablemente, siempre cada respuesta trae dos preguntas)
>> *) no hay forma de hacer un reload que pise las clases viejas con las
>> nuevas?
>> *) lo que yo quiero es tener dos tests:
>>   test_a: testea que common.f llama a common.g
>>   test_b: testea que common.g devuelve algo particular.
>>   El test_a lo hago mockeando, common.g = mock.Mock(), llamando a
>> common.f, y luego testeando common.g.assert_called_with(algo)
>>   Para hacer el test_b necesito tener common.g de verdad, no mockeada.
>>   La pregunta, entonces, es: cómo hago esto sin un reload de common entre
>> un test y otro? Tengo que guardar al comienzo common.g y luego del test
>> ponerla de nuevo en su lugar? Hay una variante mejor?
>>
>> Al margen de estas nuevas preguntas, gracias por la explicación!!
>>
>> Matías
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140521/ff829c4f/attachment.html>


More information about the pyar mailing list