TDD con Flask
PyDay Gran Canaria - Víctor Suárez
¿Quien es este tipo?
- Almeriense convertido en Tinerfeño...
- Ingeniero y entusiasta de las nuevas tecnologías.
- Lo malo es que es un javero!!!
BIBA JABA
¿Que carajos va a contarnos?
- Como utilizar TDD en python usando Flask.
- Integración continua de nuestros proyectos.
- Uso de Herramientas gratuitas para crear nuestra integración continua.
TDD
TDD
Software
Pruebas
TDD
Software
Pruebas
(Automáticas)
TDD
Software
Pruebas
(Automáticas)
Refactorizar
TDD
Fallos
Pruebas
(Automáticas)
Refactorizar
TDD
- Unitarios
- Integración
- Monitorización
- Carga
FLASK
Flask
Flask es un microframework que permite hacer aplicaciones web de forma muy sencilla y casi sin darnos cuenta.
Flask
Con flash podemos crear una aplicación web de forma muy sencilla con solo 1 método y una anotación.
from flask import Flask, request
app= Flask(__name__)
@app.route('/', methods=['GET','POST'])
def index():
collejaHandler = CollejasHTTPHandler()
collejaHandler.setup()
if request.method == 'GET':
return collejaHandler.do_GET()
else:
return collejaHandler.do_POST()
$ export FLASK_APP=flaskr.py
flask run
Testing
Testing
- Rápidos
- Facil de repetir
- Independientes
- Validación Automática
- Cubrir todo caso de uso.(cobertura de código)
import unittest
class MiTest(unittest.TextCase):
def setUp(self):
self.calculadora=calculadora()
def testSuma(self):
assert self.calculadora.suma(2,2) == 4
def testResta(self):
assert self.calculadora.resta(2,2) == 0
def testMult(self):
assert self.calculadora.mult(2,2) == 4
def testDiv(self):
assert self.calculadora.div(2,2) == 1
Testing
A la hora de probar nuestra aplicación, Flask permite realizar pruebas con un cliente que usaremos para probar la aplicación.
import unittest
import flaskr
class MiTest(unites.TestCase):
def setUp(self):
flaskr.app.testing=1
self.app = flaskr.app.test_client()
def testApp(self):
assert b'Bienvenidos a Flask' in self.app.get('/').data
IC
Integración Continua
Consiste en hacer integraciones y pruebas de nuestro software lo más rápido posible.
SCM
Compilación
Tests
Resultados
Integración Continua
Consiste en hacer integraciones y pruebas de nuestro software lo más rápido posible.
SCM
Compilación
Tests
Resultados
Integración Continua
Consiste en hacer integraciones y pruebas de nuestro software lo más rápido posible.
SCM
Compilación
Tests
Resultados
Github+travis = IC Free
Github + Travis CI
Github+Travis CI
language: python
python:
- "3.6"
install:
pip install -r requeriments.txt
script:
coverage run --source=test -m unittest discover
after_success:
coveralls
Referencias
- https://coveralls.io
- http://flask.pocoo.org
- https://docs.python.org/3/library/unittest.html
- https://github.com/zerasul/flask-tdd
TDD con Flask
By zerasul
TDD con Flask
- 1,949