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
Made with Slides.com