Tengo problemas para organizar mi prueba de clase basada en unittest
para la familia de pruebas. Por ejemplo, asuma que implemento una interfaz de "diccionario" y que quiero probar en 5 implementaciones diferentes.reutilización de pruebas unitarias para la familia de clases
Escribo una clase de prueba que prueba una interfaz de diccionario. ¿Pero cómo puedo reutilizarlo bien para probar todas mis clases? Hasta ahora yo fea:
DictType = hashtable.HashDict
En la parte superior de archivo y luego usar DictType
en la clase de prueba. Para probar otra clase, cambio manualmente el DictType
a otra cosa.
¿Cómo puede hacer esto de otra manera? No se pueden pasar argumentos a las clases unittest
, ¿hay alguna manera más agradable?
oh, muy bonito, 10x alex – zaharpopov
Estoy tratando de usar este patrón pero estoy obteniendo errores (p. ej., 'TypeError: 'NoneType' object no se puede llamar) porque el marco' unittest' ejecuta las pruebas dentro del contexto de 'MappingTestBase', así como las clases derivadas. ¿Hay alguna manera de evitar que esto suceda? ? – user200783
@PaulBaker, sin duda, puede construir el conjunto de pruebas que desea ejecutar de manera muy explícita, por ejemplo, mediante el uso de la clase 'TestLoader', consulte https://docs.python.org/2/library/unittest.html#unittest.TestLoader , por ejemplo, subclassing y reemplazando 'getTestCaseNames' para devolver' [] 'para las clases cuyos métodos de prueba no desea ejecutar. O bien, puede decorar todos los métodos de prueba para simplemente devolver si' self.dicttype es None'. los enfoques funcionan bien. –