La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.

Presentaciones similares


Presentación del tema: "Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010."— Transcripción de la presentación:

1 Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010

2 Sistemas Operativos 1 Año 2010 Testing - ¿Qué es? El Testing es la manera de comprobar que el código escrito funciona correctamente. Para ello vamos a utilizar los “unittest” (o test de unidad), que son Tests que prueban partes pequeñas de nuestro código.

3 Sistemas Operativos 1 Año 2010 Testing - ¿Qué es? Para comprobar que todo funciona, hay que testear todos los comportamientos de nuestros métodos, teniendo en cuenta sus excepciones (casos en que nuestros métodos se comportarían de manera distinta en determinada situación).

4 Sistemas Operativos 1 Año 2010 Testing - Creación de un Test Para poder crear Tests en Python se necesita importar un modulo llamado “unittest”, y la clase que vamos a necesitar de ese módulo se llama “TestCase”: - import unittest Una vez hecho eso, debemos crear una clase para testear alguna de nuestras clases, y esta nueva clase tiene que ser subclase de TestCase: - class TestPersona(unittest.TestCase)

5 Sistemas Operativos 1 Año 2010 Testing - Creación de un Test Luego se crean métodos de Test en esa clase, y cada uno de esos métodos va a probar las distintas funcionalidades de los métodos que tenga la clase Persona. Todos los métodos de Test que creemos tienen que empezar con la palabra “test”: - def testReverseOfLists(self):

6 Sistemas Operativos 1 Año 2010 Testing - las 3 “A” En todos los tests hay 3 pasos a seguir: Arrange: Se inicializan los datos necesarios para el Test. Act: Se realiza la acción a testear. Assert: Se utilizan asserts para comprobar. que el Act hace lo correcto. (info de cada assert más adelante)

7 Sistemas Operativos 1 Año 2010 Testing - Ejemplo class TestListas(unittest.TestCase): def testReverse(self): # Arrange lista = [1,2,3] # Act listaRevertida = lista.reverse() # Assert self.assertEqual([3,2,1], listaRevertida);

8 Sistemas Operativos 1 Año 2010 Testing - Asserts Los “asserts” sirven para que se muestre en consola si lo que estamos testeando esta bien o no Las variables definidas a continuación sirven para próximos usos de los “asserts”: lista = [1,2,3] lista2 = [lista, 4, 5]

9 Sistemas Operativos 1 Año 2010 Testing - Asserts assertEqual: El test da OK si ambos parámetros son iguales. - self.assertEqual(lista, [1,2,3]) assertNotEqual: El test da OK si ambos parámetros no son iguales. - self.assertNotEqual(lista, [1,2,3,4]) assertTrue: El test da OK si la condición dada por parámetro da True. - self.assertTrue(len(lista) == 3)

10 Sistemas Operativos 1 Año 2010 Testing - Asserts assertFalse: El test da OK si la condición dada por parámetro da False. - self.assertFalse(len(lista) == 4) assertIn – assertNotIn: El test da OK si el primer parámetro está o no está adentro del segundo (el segundo parámetro puede ser una colección, o un objeto creado por nosotros, habiendo definido esa clase como contenedora). - self.assertIn(1, lista) - self.assertNotIn(4, lista)

11 Sistemas Operativos 1 Año 2010 Testing - Asserts assertSameElements: El test da OK si los dos elementos pasados por parámetro son el mismo objeto. - self.assertSameElements(lista, lista2[0]) assertGreater - assertGreaterEqual - assertLess - assertLessEqual: El test da OK si el primer parámetro pasado es, respectivamente, >, >=, <, <= que el segundo parámetro. - self.assertGreater(5, lista[1])

12 Sistemas Operativos 1 Año 2010 Testing – método setUp Cuando hagamos Tests sobre un programa más complejo, se hace muy engorroso estar inicializando muchas variables en cada Test. Si éstas inicializaciones sirven para varios Tests de la misma clase, entonces podemos definir el método “setUp()”. Este método se corre antes de cada método de Test que tengamos, y luego se usan esas variables en cada Test como si ya existieran: def setUp(self): self.lista = [1,2,3] # se pone “self” antes

13 Sistemas Operativos 1 Año 2010 Testing – método tearDown Una dificultad que podemos tener usando el setUp es que hay elementos que si se modifican en los Tests, el setUp no los inicializa desde cero, usando los cambios realizados para el próximo Test, y este puede fallar. La solución es definir el método tearDown(), que se corre luego de cada método de Test: def tearDown(self): self.lista = None

14 Sistemas Operativos 1 Año 2010 Testing – corriendo el Test Luego de nuestra clase de Test, en donde escribimos nuestro main van estas 2 lineas de código, para decirle al unittest de Python cual es la clase de Test que vamos a testear: suite = unittest.TestLoader().loadTestsFromTestCase(“ClaseTest”) unittest.TextTestRunner(verbosity=2).run(suite) Donde dice “ClaseTest” va el nombre de la clase Test creada, sin las comillas (teniendo en cuenta el ejemplo anterior, iría TestListas).

15 Fin Sistemas Operativos 1 Año 2010


Descargar ppt "Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010."

Presentaciones similares


Anuncios Google