Sembra un luogo pratico per un caricatore di test.
Partenza http://docs.python.org/library/unittest.html#unittest.TestLoader.loadTestsFromName
Se si forniscono alcune convenzioni di denominazione idonei probabilmente si possono creare suite in base alle convenzioni di denominazione di test.
Se ho prova A che esegue su AIX, Linux (tutte) e 32 bit di Windows, prova B che gira su Windows 64, Linux e Solaris 64, e test di C che gira su tutto, ma HPUX e il test D che funziona su tutto ... Quale possibile convenzione di denominazione è lì per questo?
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 difficile è "non HP/UX". Evitare la logica negativa ti semplifica la vita. In questo caso, è sufficiente elencare tutti i sistemi operativi che non sono HP/UX. L'elenco è piuttosto breve e cresce lentamente.
I test "Tutti" sono semplicemente una ricerca di testo separata che viene unita alla lista di test della piattaforma corrente per creare una suite completa.
Si potrebbe provare qualcosa di simile
class TextC_XHPUX(unittest.TestCase):
tua regola di corrispondenza di testo è normalmente "_someOSName"
; le tue eccezioni sarebbero un filtro di testo strano per scherzare con il nome "_X"
.
"Non è possibile avere un elenco positivo di sistemi operativi. Che cosa succede se aggiungiamo un nuovo sistema operativo? Dobbiamo rinominare ogni test per includerlo esplicitamente?" Sì. Il nuovo mercato dei sistemi operativi è lento ad evolversi, non è così doloroso da gestire.
L'alternativa consiste nell'includere informazioni all'interno di ciascuna classe (ad esempio una funzione a livello di classe) o un decoratore e utilizzare un caricatore di classe personalizzato che valuti la funzione a livello di classe.
fonte
2009-07-29 11:44:31
SkipTest è anche nel naso, con l'opzione --no-skip molto utile. – Almad