10.07.2015 Views

A4 apaisado, 2 columnas - PET: Python Entre Todos - Python ...

A4 apaisado, 2 columnas - PET: Python Entre Todos - Python ...

A4 apaisado, 2 columnas - PET: Python Entre Todos - Python ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introducción a Unit Testing con <strong>Python</strong> 13Todo esto son cosas de matemática que vimos en el colegio. Ahora veamos un código quecumple eso:import mathclass NoEsFuncionCuadratica(Exception):passclass NoExistenRaicesReales(Exception):passLa función cuadrática va a estar dada por:(x - r1) * (x - r2) = 0"""# a este resultado se llega haciendo las cuentas de distribuciónreturn (1, -1 * (primer_raiz + segunda_raiz), primer_raiz * segunda_raiz)Por último vemos los tests que escribimos para ese código:import unittestfrom polinomio import buscar_raices, buscar_coeficientes, \NoEsFuncionCuadratica, \NoExistenRaicesRealesdef buscar_raices(a, b, c):""" Toman los coeficientes a, b y c de una función cuadrática y buscasus raíces. La función cuadrática es del estilo:ax**2 + b x + c = 0Va a devolver una tupla con las dos raíces donde la primer raíz va a sermenor o igual que la segunda raíz."""if a == 0:raise NoEsFuncionCuadratica()discriminante = b * b - 4 * a * cif discriminante < 0:raise NoExistenRaicesReales()raiz_discriminante = math.sqrt(discriminante)primer_raiz = (-1 * b + raiz_discriminante) / (2 * a)segunda_raiz = (-1 * b - raiz_discriminante) / (2 * a)# min y max son funciones de pythonchico = min(primer_raiz, segunda_raiz)grande = max(primer_raiz, segunda_raiz)return (chico, grande)class TestPolinomio(unittest.TestCase):def test_buscar_raices(self):COEFICIENTES_RAICES = [((1,0,0), (0, 0)),((-1,1,2), (-1, 2)),((-1,0,4), (-2, 2)),]for coef, raices_esperadas in COEFICIENTES_RAICES:raices = buscar_raices(coef[0], coef[1], coef[2])self.assertEquals(raices, raices_esperadas)def test_formar_poliniomio(self):RAICES_COEFICIENTES = [((1, 1), (1, -2, 1)),((0, 0), (1, 0, 0)),((2, -2), (1, 0, -4)),((-4, 3), (1, 1, -12)),]for raices, coeficientes_esperados in RAICES_COEFICIENTES:coeficientes = buscar_coeficientes(raices[0], raices[1])self.assertEquals(coeficientes, coeficientes_esperados)def buscar_coeficientes(primer_raiz, segunda_raiz):""" Dada las raíces de una función cuadrática, devuelve los coeficientes.def test_no_pudo_encontrar_raices(self):self.assertRaises(NoExistenRaicesReales, buscar_raices, 1, 0, 4)<strong>Python</strong> <strong>Entre</strong> <strong>Todos</strong> (número 1, Agosto 2010) — http://revista.python.org.ar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!