Me pregunto qué técnicas utilizan las personas para simplificar el "tamaño" del código utilizado para las pruebas unitarias. Por ejemplo, estaba tratando de ordenar un objeto de la clase y probar el objeto mariscal (pero esto supone que el oficial está trabajando correctamente).¿Hay un estilo mínimo para unittest en Python?
en cuenta la clase
import unittest
class Nums(object):
def __init__(self, n1_, n2_, n3_):
self.n1, self.n2, self.n3 = n1_, n2_, n3_
def marshal(self):
return "n1 %g, n2 %g, n3 %g"%(self.n1,self.n2,self.n3)
y luego el cálculo de referencias basado, lista basada, y pruebas normales
class NumsTests(unittest.TestCase):
def setUp(self):
self.nu = Nums(10,20,30)
def test_init1(self):
self.assertEquals(self.nu.marshal(),"n1 %g, n2 %g, n3 %g"%(10,20,30))
def test_init2(self):
self.assertEquals([self.nu.n1,self.nu.n2,self.nu.n3],[10,21,31])
def test_init3(self):
self.assertEquals(self.nu.n1,10)
self.assertEquals(self.nu.n2,21)
self.assertEquals(self.nu.n3,31)
que dan los siguientes errores (ya que, 20! = 21 y 30! = 31 , mi prueba tiene una inicialización incorrecta o las condiciones de prueba son incorrectas)
AssertionError: 'n1 10, n2 20, n3 30' != 'n1 10, n2 21, n3 31'
AssertionError: [10, 20, 30] != [10, 21, 31]
AssertionError: 20 != 21
La primera y segunda er Los mensajes ror son difíciles de entender (ya que tiene que analizar la cadena o la lista). Sin embargo, la tercera técnica explota rápidamente en la cantidad de código utilizado para probar objetos complejos.
¿Existe una manera mejor de simplificar las pruebas unitarias sin crear mensajes de error difíciles? Y, sin depender de la veracidad de una función de Mariscal?
[cambió test_marshal
-marshal
]
No debe tener ningún código de prueba en su sistema bajo prueba (en este caso, la clase 'Nums'). – Skilldrick
@Skilldrick No sé qué significa "código de prueba en el sistema bajo prueba". –
el código que prueba 'Nums' debe estar en un archivo separado de la clase' Nums' en sí. Así que mueva 'test_marshal' a otro archivo (es decir, su archivo de prueba). –