2011-08-05 11 views
18

Ok, como la búsqueda de Google no me está ayudando desde hace tiempo (incluso cuando se usan las palabras clave correctas).Métodos sin prueba en Python TestCase

Tengo una clase que se extiende desde TestCase en la que quiero tener algunos métodos auxiliares que no se van a ejecutar como parte de la prueba, se usarán para generar algunos objetos burlados, etc., cosas auxiliares para casi cualquier prueba

Sé que podría utilizar el decodificador @skip así que unittest no ejecuta un método de prueba en particular, pero creo que es un truco feo para usar para mi propósito, ¿algún consejo?

Gracias de antemano, la comunidad: D

+4

¿La prueba de unidad no solo ejecuta pruebas de métodos que comienzan con "test_"? – daveydave400

Respuesta

32

creo que usted no tiene que hacer nada. Sus métodos de ayuda no deberían comenzar con test_.

+1

@piva: lea la documentación de unittest en http://docs.python.org/library/unittest.html, específicamente "TestLoader utiliza el prefijo del nombre del método 'prueba' para identificar automáticamente los métodos de prueba." – daveydave400

+0

@ daveydave400 Yeap, pregunta tonta mía, pero con prisa mis ojos se apresuraron a través del texto – victorcampos

+0

/aside De vez en cuando, me olvidé de prefijar un método de prueba con 'test_', y me lleva un tiempo averiguar por qué no está siendo ejecutado por el corredor de prueba. –

1

El corredor de prueba solo ejecutará directamente métodos que comiencen con test, así que asegúrese de que los nombres de sus métodos auxiliares no comiencen con test.

2

Los únicos métodos que unittest ejecutará [1] son ​​setUp, cualquier cosa que comience con test, y tearDown [2], en ese orden. Puede hacer métodos auxiliares y llamarlos de cualquier forma excepto por esas tres cosas, y no serán ejecutados por unittest.

que se pueda imaginar setUp como __init__: si se está generando objetos simulados que son utilizados por múltiples pruebas, cree en setUp.

def setUp(self): 
    self.mock_obj = MockObj() 

[1]: Esto no es del todo cierto, pero estos son los 3 principales grupos de métodos que puede concentrarse en la hora de escribir pruebas.

[2]: Por razones de herencia, unittest ejecutará tanto test_foo y testFoo, pero test_foo es el estilo preferido en estos días. setUp y tearDown debe aparecer como tal.

Cuestiones relacionadas