PyUnit
Categorías: Python | Programacion |
1. Contexto
PyUnit es el framweork estandar para desarrollar los casos de prueba de unidad, para progrmas desarrollados en el lenguaje Python.
PyUnit hace parte de la librería estándar de Python desde la versión 2.1
2. Pre-requisitos
PyUnit esta diseñado para trabajar con cualquier versión de Python superior a la 1.5.2, funciona sin mayores inconvenientes en plataformas Linux, Mac
3. Instalación
las clases necesarias para escribir las pruebas de unidad se encuentra en el modulo "unittest", que hace parte de la librería estándar de Python desde la versión 2.1. Si se tiene una versión anterior hay que buscar y descargar el modulo por separado.
4. Configuración
luego de asegurarse que la versión de Python con la que contamos tiene el modulo "unittest", lo que resta por hacer para asegurar que se pueda usar este modulo para el desarrollo, es hacer incluir el directorio que contiene el archivo "unittest.py" en el directorio de búsqueda de Python (phat).
esto se puede hacer de dos formas, una es editando la variable de entorno ""$PYTHONPATH"", o sencillamente cambiando el archivo "unittest.py" al directorio actual de búsqueda que suele estar en una ruta como esta: /usr/lib/python1.5/site-packages.
5. Aspectos Básicos
los bloques básicos para construir una prueba de unidad se denominan "casos de prueba" (escenarios únicos que deben ser configurados para probar que son correctos). para poder hacer un caso de prueba propio en PyUnit es necesario hacer una subclase de "TestCase", que es un objeto que puede correr un único método de prueba.
para realizar una prueba de algo en Python se usa el comando "assert", si este comando falla cuando se ejecuta el caso de prueba PyUnit dará el caso por fallido.
import unittest
class DefaultWidgetSizeTestCase(unittest.TestCase):
def runTest(self):
widget = Widget("The widget")
assert widget.size() == (50,50), 'incorrect default size'para hacer una instancia de un caso de prueba, se usa su constructor sin ningun parámetro
testCase = DefaultWidgetSizeTestCase()
al escribir los casos de prueba es mejor hacerlo en un modulo separado, y no incluirlos entre el código fuente ya que asi: -los casos de prueba se pueden correr por separado desde la linea de comandos, -se evita la mala idea de cambiar el codigo fuente para que se ajuste a los casos de prueba, -el codigo probado puede ser cambiado mas fácilmente -el código de prueba es modificado en una medida menor que el código que es probado
para ejecutar un caso de prueba se usan las clases "TestRunner" que dan un entorno en el cual las pruebas se pueden desarrollar, la clase mas común para ejecutar las pruebas es "TextTestRunner", pues permite ver un reporte de los resultados de la prueba de forma textual.
runner = unittest.TextTestRunner() runner.run(DefaultWidgetSizeTestCase)
