Suena como un lugar útil para un cargador de prueba.
Salida http://docs.python.org/library/unittest.html#unittest.TestLoader.loadTestsFromName
Si proporciona algunas convenciones de nombres adecuados es probable que pueda crear familias basadas en sus convenciones de nomenclatura de prueba.
Si tengo la prueba A que se ejecuta en AIX, Linux (todo) y 32 bit Windows, prueba B que se ejecuta en Windows 64, Linux 64 y Solaris, y prueba C que se ejecuta en todo menos en HPUX y prueba D eso funciona con todo ... ¿Qué convención de nombres posible existe para esto?
class TestA_AIX_Linux2_Win32(unittest.TestCase):
class TestB_Win64_Linux64_Solaris(unittest.TestCase):
class TestC_AIX_Linux2_Win32_Win64_Linux64_Solaris(unittest.TestCase):
class TestD_All(unittest.TestCase):
La parte difícil es "no HP/UX". Evitar la lógica negativa simplifica tu vida. En este caso, simplemente enumera todos los SO que no son HP/UX. La lista es bastante corta y crece lentamente.
Las pruebas "Todas" son simplemente una búsqueda de texto separada que se fusiona con la lista de pruebas de la plataforma actual para crear un conjunto completo.
Usted podría intentar algo así como
class TextC_XHPUX(unittest.TestCase):
Su regla de texto coincidente es normalmente "_someOSName"
; sus excepciones serían un extraño filtro de texto para jugar con el nombre "_X"
.
"No podemos tener una lista positiva de SO. ¿Qué pasa si agregamos un nuevo sistema operativo? ¿Tenemos que cambiar el nombre de cada prueba para incluirlo explícitamente?" Sí. El nuevo mercado de sistemas operativos evoluciona lentamente, no es tan doloroso de administrar.
La alternativa es incluir información dentro de cada clase (es decir, una función de nivel de clase) o un decorador y usar un cargador de clases personalizado que evalúe la función de nivel de clase.
SkipTest también está en la nariz, con la opción --no-skip muy práctica. – Almad