[pyar] Decorator en unit tests

Lucas Liendo mindmaster en gmail.com
Vie Mar 11 09:32:54 ART 2016


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


# Si estamos en Windows entonces el siguiente test deberia saltearse.

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


Lo que sucede en definitiva es que al ejecutar el test con nosetests (en
Linux) obtengo :

    Ran 0 tests in 0.000s

Hay algo que estoy haciendo mal pero no logro darme cuenta :(
Desde ya muchisimas gracias a todos !

-- 

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/51f8f32b/attachment-0001.html>


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