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 .