Pruebas Unitarias

Pruebas Unitarias

las pruebas unitarias sons una forma de comprobar el correcto funcionamiento de un módulo de código, o conjunto de estos

Objetivo

El objecto de estas es escribir casos de prueba para cada función no trivial o método en el módulo, de forma que cada caso sea independiente del resto.

Características

  1. Automatizable
  2. Completas
  3. Repetibles o Reutilizables
  4. Independientes
  5. Profesionales

Ventajas

  • Menos errores en etapa temprana
  • Simplifica la integración
  • Documenta el código
  • Facilita el cambio (Refactorización)
  • Profesionales

Unittest

unittest es el framework para pruebas python basado en JUnit, soporta:

  • Automatización de pruebas
  • Setup compartidos 
  • Colección de pruebas
  • Independencia del framework de reporte de pruebas.

Unittest

Para crear una Clase para realizar pruebas en este framework es necesario lo siguiente

  1. Toda clase de prueba debe heredar de unittest.TestCase
  2. setUp es el método para realizar las configuraciones iniciales antes de cada prueba, este método se ejecuta antes de cada prueba
  3. tearDown es el método para eliminar las configuraciones iniciales, después de cada prueba

Unittest

https://wiki.python.org/moin/PythonTestingToolsTaxonomy

http://docs.python-guide.org/en/latest/writing/tests/

Unit Test en Django

Las pruebas unitarias de Django usan el módulo de la estándar de pruebas de Python: unittest.

Django implementa clases Varias clases para la realización de pruebas.

Hierarchy of Django unit testing classes (TestCase subclasses)

SimpleTestCase

Es la Clase mas básica para pruebas en Django, incluye:

Client, Modificar las configuraciones (settings), Verificar redirecciones http de las vistas, Fragmentos de documentos (html, xml, json), Testeo de Forms

No soporta:

ORM, fixtures, omitir pruebas de acuerdo a características de la base de datos, ademas de otras pruebas mas especializadas

 

TransactionTestCase y TestCase

diferencias:

  • Transaction devuelve la DB a su estado orginial
  • TestCase por cada prueba hace un rollback

Assert en python
https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual

Assert en django

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#assertions

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#skipping-tests

fixtures

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.TransactionTestCase.fixtures

https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-dumpdata

Client

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#the-test-client

 

 

 

deck

By Leonardo Fabio Orozco Padilla