[pyar] Decorator en unit tests

Lucas Liendo mindmaster en gmail.com
Vie Mar 11 09:46:41 ART 2016


Acabo de probar tu sugerencia !


from unittest import TestCase
from unittest.case import SkipTest


class platform_skip_test(object):
    def __init__(self, selected_platform):
        self._selected_platform = selected_platform

    def __call__(self, f):
        def wrapper(*wrapped_f_args, **wrapped_f_kwargs):
            # Si ! Aca deberiamos llamar a platform.system() en vez de
'Linux'.
            if 'Linux' == self._selected_platform:
                return f(*wrapped_f_args, **wrapped_f_kwargs)

            raise SkipTest()

        return wrapper


class TestUnixCheck(TestCase):
    @platform_skip_test('Windows')
    def test_something_only_if_on_unix(self):
        self.assertTrue(True)


Lamentablemente pasa lo mismo :(

2016-03-11 23:41 GMT+11:00 Martin Marrese <marrese en gmail.com>:

> On Fri, Mar 11, 2016 at 9:33 AM Lucas Liendo <mindmaster en gmail.com> wrote:
>
>> Buenas ! Queria compartir con Uds un fragmento de código que no logro
>> hacer correr adecuadamente (no logro darme cuenta donde estoy metiendo la
>> pata).
>>
>> Armé un decorator que quiero utilizar en mis tests. La idea del mismo es
>> que solamente ciertos tests se ejecuten si estoy en una plataforma en
>> particular,
>> por ejemplo, si estoy en Windows entonces ciertos checks que son
>> específicos
>> para platformas Unix no deberían ejecutarse.
>>
>> Les paso el decorator en cuestión (la detección de la platforma se
>> debería hacer con un platform.system(), sin embargo en el decorator lo he
>> hardcodeado para simplificar el ejemplo !) :
>>
>>
>> from unittest import TestCase
>> from unittest.case import SkipTest
>>
>>
>> class platform_skip_test(object):
>>     def __init__(self, selected_platform):
>>         self._selected_platform = selected_platform
>>
>>     def __call__(self, f):
>>         def wrapper(*wrapped_f_args, **wrapped_f_kwargs):
>>             return f(*wrapped_f_args, **wrapped_f_kwargs)
>>
>>         # Si ! Aca deberiamos llamar a platform.system() en vez de
>> 'Linux'.
>>         if 'Linux' == self._selected_platform:
>>             raise SkipTest()
>>
>>         return wrapper
>>
>
> La validación de la plataforma no deberías hacerla dentro de la función
> wrapper ?
>
> Saludos,
> Martín
> --
>
> Martín
>
> +54 911 5112 9448
> Skype: kyheo_
>
> _______________________________________________
> 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
>



-- 

Saludos,
Lucas.

Radar : http://radar-monitoring.readthedocs.org/en/latest/index.html
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160311/6b3481e6/attachment.html>


Más información sobre la lista de distribución pyar