Inturiasgary’s Blog

mayo 11, 2010

Usando el módulo doctest

Filed under: Uncategorized — inturiasgary @ 1:15 pm

Python tiene un soporte considerable para pruebas, con los módulos doctest y unittest para pruebas de unidad y el módulo de pruebas para pruebas de regresión.

Cuando creamos un módulo, estos están diseñados para ser importados y los objetos ser proveidos. Cuando el módulo es importado las pruebas de unidad simplemente son ignorados; pero cuando el modulo esta siendo ejecutado las pruebas de unidad son ejecutados. Estas acciones son llevadas a cabo gracias al modulo doctest.

El modulo doctest nos permite realizar pruebas unidad de la manera mas simple y facil como sea posible.

Para realizar las pruebas todo lo que necesitamos es adicionar ejemplos a nuestro docstring, escribiendo lo mismo que en el interprete de Python y el resultado que quisieramos obtener de retorno. Como por ejemplo:

def unique_words(page):
  ''' Returns set of the unique words in list of lines of text

    Example:

    >>> from StringIO import StringIO
    >>> fileText = """the cat sat on the mat
    ... the mat was ondur the cat
    ... one fish two fish red fish
    ... blue fish
    ... This fish has a yellow car
    ... This fish has a yellow star"""
    >>> file = StringIO(fileText)
    >>> page = file.readlines()
    >>> words = unique_words(page)
    >>> print sorted(list(words))
    ["This", "a", "blue", "car", "cat", "fish", "has", "mat",
     "on", "ondur", "one", "red", "sat", "star", "the", "two",
     "was", "yellow"]
    >>>
  '''

  return set(word  for line in page  for word in line.split())

def _test():
    import doctest
    doctest.testmod()

if __name__ == "__main__":
    _test()

El docstring contiene una pequeña descripcion de lo que se intenta probar, seguido del codigo que hubieramos
tipeado para realizar la prueba en el interprete de Python.
El modulo doctest usa esta sintaxis ya que nos es mas familiar.

Para realizar la respectiva prueba basta con escribir:

python NombreDelPrograma.py -v

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: