Para nuestro proyecto, bastará con que crear el fichero ./ambiente/aplicacion/aplicacion/tests/testFuncionales.py con el siguiente contenido.
#coding:utf-8 from unittest import TestCase class Listado(TestCase): def setUp(self): from aplicacion import main from webtest import TestApp app = main({}) self.testapp = TestApp(app) def test_ficheros_listado(self): respuesta = self.testapp.get('/ficheros', status=200, xhr=True) self.assertEqual(respuesta.content_type, 'application/json') self.assertItemsEqual(respuesta.json_body['respuesta'], ['alortiz', 'kpenate', 'opineda']) class Detalle(TestCase): def setUp(self): from aplicacion import main from webtest import TestApp app = main({}) self.testapp = TestApp(app) def test_ficheros_detalle(self): respuesta = self.testapp.get('/ficheros/' + 'alortiz', status=200, xhr=True) self.assertItemsEqual(respuesta.json_body['respuesta']['palabras'], ['ambiente', 'publico']) def test_ficheros_detalle_inexistente(self): respuesta = self.testapp.get('/ficheros/' + 'fitzcarraldo', status=200, xhr=True) self.assertEqual(respuesta.json_body['respuesta']['error'], 'No such file or directory') class Creacion(TestCase): def setUp(self): from aplicacion import main from webtest import TestApp app = main({}) self.testapp = TestApp(app) def tearDown(self): respuesta = self.testapp.delete('/ficheros/' + 'fcornejo', status=200) def test_ficheros_creacion(self): datos = {'usuario': 'fcornejo', 'data': {'nombre': 'Flor', 'apellido':'Cornejo', 'palabras': ['ente', 'obvio']}} respuesta = self.testapp.post_json('/ficheros', status=200, params=datos) self.assertDictEqual(respuesta.json_body['respuesta'], datos['data']) class Modificacion(TestCase): def setUp(self): from aplicacion import main from webtest import TestApp app = main({}) self.testapp = TestApp(app) datos = {'usuario': 'fcornejo', 'data': {'nombre': 'Flor', 'apellido':'Cornejo', 'palabras': ['ente', 'obvio']}} self.testapp.post_json('/ficheros', status=200, params=datos) def tearDown(self): respuesta = self.testapp.delete('/ficheros/' + 'fcornejo', status=200) def test_ficheros_modificacion(self): datos = {'usuario': 'fcornejo', 'data': {'nombre': 'Flor', 'apellido':'Cornejo', 'palabras': ['espejismo', 'olvido']}} respuesta = self.testapp.put_json('/ficheros/' + 'fcornejo', status=200, params=datos) self.assertDictEqual(respuesta.json_body['respuesta'], datos['data']) class Borrado(TestCase): def setUp(self): from aplicacion import main from webtest import TestApp app = main({}) self.testapp = TestApp(app) datos = {'usuario': 'fcornejo', 'data': {'nombre': 'Flor', 'apellido':'Cornejo', 'palabras': ['ente', 'obvio']}} self.testapp.post_json('/ficheros', status=200, params=datos) def test_ficheros_borrado(self): respuesta = self.testapp.delete('/ficheros/' + 'fcornejo', status=200) self.assertEqual(respuesta.json_body['respuesta'], 'fcornejo')Al correr nosetest con un poco de verbosidad (Un -v más no añade nada importante, y el próximo es casi preocupante), la salida debería ser la siguiente:
$ nosetests -v test_ficheros_borrado (aplicacion.tests.testFuncionales.Borrado) ... ok test_ficheros_creacion (aplicacion.tests.testFuncionales.Creacion) ... ok test_ficheros_detalle (aplicacion.tests.testFuncionales.Detalle) ... ok test_ficheros_detalle_inexistente (aplicacion.tests.testFuncionales.Detalle) ... ok test_ficheros_listado (aplicacion.tests.testFuncionales.Listado) ... ok test_ficheros_modificacion (aplicacion.tests.testFuncionales.Modificacion) ... ok test_ficheros_borrado (aplicacion.tests.testUnitarios.Borrado) ... ok test_ficheros_borrado_inexistente (aplicacion.tests.testUnitarios.Borrado) ... ok test_ficheros_creacion (aplicacion.tests.testUnitarios.Creacion) ... ok test_ficheros_creacion_json_malformed (aplicacion.tests.testUnitarios.Creacion) ... ok test_ficheros_detalle (aplicacion.tests.testUnitarios.Detalle) ... ok test_ficheros_detalle_noexistente (aplicacion.tests.testUnitarios.Detalle) ... ok test_ficheros_listado (aplicacion.tests.testUnitarios.Listado) ... ok test_ficheros_modificacion (aplicacion.tests.testUnitarios.Modificacion) ... ok Name Stmts Miss Cover Missing ------------------------------------------------------------------- aplicacion.py 10 0 100% aplicacion/fichero_app.py 0 0 100% aplicacion/fichero_app/ficheros.py 46 11 76% 21-22, 36, 52-55, 69-72 aplicacion/tests.py 0 0 100% aplicacion/tests/testFuncionales.py 60 0 100% aplicacion/tests/testUnitarios.py 99 0 100% aplicacion/views.py 0 0 100% aplicacion/views/actividades.py 35 2 94% 43-44 ------------------------------------------------------------------- TOTAL 250 13 95% ---------------------------------------------------------------------- Ran 14 tests in 1.231s OK
No hay comentarios:
Publicar un comentario