28.06.2017 Views

Python para todos

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Pruebas<br />

if __name__ == “__main__”:<br />

_test()<br />

unittest / PyUnit<br />

unittest, también llamado PyUnit, forma parte de una familia de<br />

herramientas conocida colectivamente como xUnit, un conjunto de<br />

frameworks basados en el software SUnit <strong>para</strong> Smalltalk, creado por<br />

Kent Beck, uno de los padres de la eXtreme Programming. Otros<br />

ejemplos de herramientas que forman parte de esta familia son JUnit<br />

<strong>para</strong> Java, creada por el propio Kent Beck junto a Erich Gamma, o<br />

NUnit, <strong>para</strong> .NET.<br />

El uso de unittest es muy sencillo. Para cada grupo de pruebas tenemos<br />

que crear una clase que herede de unittest.TestCase, y añadir<br />

una serie de mé<strong>todos</strong> que comiencen con test, que serán cada una de<br />

las pruebas que queremos ejecutar dentro de esa batería de pruebas.<br />

Para ejecutar las pruebas, basta llamar a la función main() del módulo,<br />

con lo que se ejecutarán <strong>todos</strong> los mé<strong>todos</strong> cuyo nombre comience con<br />

test, en orden alfanumérico. Al ejecutar cada una de las pruebas el<br />

resultado puede ser:<br />

• OK: La prueba ha pasado con éxito.<br />

• FAIL: La prueba no ha pasado con éxito. Se lanza una excepción<br />

AssertionError <strong>para</strong> indicarlo.<br />

• ERROR: Al ejecutar la prueba se lanzó una excepción distinta de<br />

AssertionError.<br />

En el siguiente ejemplo, dado que el método que modela nuestra prueba<br />

no lanza ninguna excepción, la prueba pasaría con éxito.<br />

import unittest<br />

class EjemploPruebas(unittest.TestCase):<br />

def test(self):<br />

pass<br />

if __name__ == “__main__”:<br />

unittest.main()<br />

139

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

Saved successfully!

Ooh no, something went wrong!