unittest unit tests run examples example español assertraises assertequal python unit-testing python-unittest

tests - unittest python 3



¿Cuál es la diferencia entre setUp() y setUpClass() en el test de unidad de Python? (2)

Después de leer la pregunta y la respuesta aceptada, creo que se puede hacer algún suplemento.

P: ¿Por qué la configuración se manejaría en un método sobre el otro?
R: Es porque el método de prueba puede necesitar preliminar y el preliminar varía de un método de prueba a otro.

Por ejemplo, tome el código a continuación de https://www.tutorialspoint.com/unittest_framework/unittest_framework_api.htm como ejemplo:

import unittest class simpleTest2(unittest.TestCase): def setUp(self): self.a = 10 self.b = 20 name = self.shortDescription() if name == "add": self.a = 10 self.b = 20 print name, self.a, self.b if name == "sub": self.a = 50 self.b = 60 print name, self.a, self.b def tearDown(self): print ''/nend of test'',self.shortDescription() def testadd(self): """add""" result = self.a+self.b self.assertTrue(result == 30) def testsub(self): """sub""" result = self.a-self.b self.assertTrue(result == -10) if __name__ == ''__main__'': unittest.main()

El método testadd y testsub necesita una entrada diferente y podemos establecer el valor de la entrada respectivamente en el método de setUp .

¿Cuál es la diferencia entre setUp() y setUpClass() en el marco de setUpClass() Python? ¿Por qué la configuración se manejaría en un método sobre el otro?

Quiero entender qué parte de la configuración se realiza en las setUp() y setUpClass() , así como con tearDown() y tearDownClass() .


La diferencia se manifiesta cuando tiene más de un método de prueba en su clase. setUpClass y tearDownClass se ejecutan una vez para toda la clase; setUp y tearDown se ejecutan antes y después de cada método de prueba.

Por ejemplo:

class Example(unittest.TestCase): @classmethod def setUpClass(cls): print("setUpClass") def setUp(self): print("setUp") def test1(self): print("test1") def test2(self): print("test2") def tearDown(self): print("tearDown") @classmethod def tearDownClass(cls): print("tearDownClass")

Cuando ejecutas esta prueba, se imprime:

setUpClass setUp test1 tearDown .setUp test2 tearDown .tearDownClass

(Los puntos ( . ) Son la salida predeterminada de la prueba de setUp cuando se pasa una prueba). Observe que setUp y tearDown aparecen antes y después de test1 y test2 respectivamente, mientras que setUpClass y tearDownClass aparecen solo una vez, al principio y al final de todo el caso de prueba .