¿Existe una función que se activa al principio / final de un escenario de pruebas? Las funciones setUp y tearDown se activan antes / después de cada prueba.
Normalmente me gustaría tener esto:
class TestSequenceFunctions(unittest.TestCase):
    def setUpScenario(self):
        start() #launched at the beginning, once
    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)
    def test_sample(self):
        with self.assertRaises(ValueError):
            random.sample(self.seq, 20)
        for element in random.sample(self.seq, 5):
            self.assertTrue(element in self.seq)
    def tearDownScenario(self):
        end() #launched at the end, oncePor ahora, estos setup y tearDown son pruebas unitarias y se extienden en todos mis escenarios (que contienen muchas pruebas), una es la primera prueba, la otra es la última prueba.
                    
                        python
                                unit-testing
                                
                    
                    
                        cisne
fuente
                
                fuente

Respuestas:
A partir de 2.7 (según la documentación ) obtiene
setUpClassytearDownClassque se ejecutan antes y después de que se ejecuten las pruebas en una clase determinada, respectivamente. Alternativamente, si tiene un grupo de ellos en un archivo, puede usarsetUpModuleytearDownModule( documentación ).De lo contrario, lo mejor que puede hacer es crear su propio TestSuite derivado y anularlo
run(). Todas las demás llamadas serían manejadas por el padre, y la ejecución llamaría a su código de configuración y desmontaje alrededor de una llamada alrunmétodo del padre .fuente
Tengo el mismo escenario, para mí los métodos setUpClass y tearDownClass funcionan perfectamente
fuente
Para python 2.5, y cuando se trabaja con pydev, es un poco difícil. Parece que pydev no usa el conjunto de pruebas, pero busca todos los casos de prueba individuales y los ejecuta todos por separado.
Mi solución para esto fue usar una variable de clase como esta:
Con este truco, cuando hereda de esto
TestCase(en lugar de del originalunittest.TestCase), también heredará el valorrunCountde 0. Luego, en el método de ejecución, el valorrunCountdel caso de prueba secundario se verifica y se incrementa. Esto deja larunCountvariable para esta clase en 0.Esto significa
setUpClassque solo se ejecutará una vez por clase y no una vez por instancia.Todavía no tengo un
tearDownClassmétodo, pero supongo que se podría hacer algo con ese contador.fuente
Aquí hay un ejemplo: 3 métodos de prueba acceden a un recurso compartido, que se crea una vez, no por prueba.
fuente