Me gustaría agregar un par de cosas a lo que hace la unittest.TestCase
clase al inicializarse, pero no puedo averiguar cómo hacerlo.
Ahora mismo estoy haciendo esto:
#filename test.py
class TestingClass(unittest.TestCase):
def __init__(self):
self.gen_stubs()
def gen_stubs(self):
# Create a couple of tempfiles/dirs etc etc.
self.tempdir = tempfile.mkdtemp()
# more stuff here
Me gustaría que todos los stubs se generen solo una vez para todo este conjunto de pruebas. No puedo usar setUpClass()
porque estoy trabajando en Python 2.4 (tampoco he podido hacer que eso funcione en Python 2.7).
¿Qué estoy haciendo mal aquí?
Me sale este error:
`TypeError: __init__() takes 1 argument (2 given)`
... y otros errores cuando muevo todo el código auxiliar __init__
cuando lo ejecuto con el comando python -m unittest -v test
.
python
unit-testing
novato
fuente
fuente
Respuestas:
Prueba esto:
Está anulando los
TestCase
de__init__
, por lo que es posible que desee dejar que la clase base maneje los argumentos por usted.fuente
setUp
lugar de anularlo__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
lugar desuper(TestingClass, self).__init__(*args, **kwargs)
Solo quería agregar algunas aclaraciones sobre cómo anular la función init de
La función se llamará antes de cada método en su clase de prueba. Tenga en cuenta que si desea agregar algunos cálculos costosos que deben realizarse una vez antes de ejecutar todos los métodos de prueba, utilice el método de clase SetUpClass
Esta función se llamará una vez antes de todos los métodos de prueba de la clase. Consulte
setUp
un método que se llama antes de cada método de prueba.fuente
Instale unittest2 y use unittest de ese paquete.
y luego use la clase setupModule / tearDownModule o setupClass / tearDown para una lógica de inicialización especial
Más información: http://www.voidspace.org.uk/python/articles/unittest2.shtml
También lo más probable es que esté creando una prueba de integración más que una prueba unitaria. Elija un buen nombre para las pruebas para diferenciarlas o coloque un módulo contenedor diferente.
fuente