Tengo un grupo de casos de prueba en los que todos deben hacer exactamente la misma prueba, en la línea de "¿El método x devuelve el nombre de un archivo existente?"¿Cómo puedo agregar un método de prueba a un grupo de clases derivadas de Django TestCase?
Pensé que la mejor manera de hacerlo sería una clase base derivada de TestCase que todos comparten, y simplemente agregue la prueba a esa clase. Desafortunadamente, el marco de prueba todavía intenta ejecutar la prueba para la clase base, donde no tiene sentido.
class SharedTest(TestCase):
def x(self):
...do test...
class OneTestCase(SharedTest):
...my tests are performed, and 'SharedTest.x()'...
me trataron de cortar en un cheque para simplemente omitir la prueba si se llama a un objeto de la clase base en lugar de una clase derivada de esta manera:
class SharedTest(TestCase):
def x(self):
if type(self) != type(SharedTest()):
...do test...
else:
pass
pero consiguió este error:
ValueError: no such test method in <class 'tests.SharedTest'>: runTest
En primer lugar, me gustaría cualquier sugerencia elegante para hacer esto. En segundo lugar, aunque realmente no quiero usar el hack de tipo(), me gustaría entender por qué no está funcionando.
@jivanamara: Hay una manera de evitar que se cuente el método de prueba de superclase _and_ para escribir el método de prueba sin la comprobación 'if getattr (...)'. Ver la segunda actualización de mi respuesta. –