-
Notifications
You must be signed in to change notification settings - Fork 5
Ejecutar test
#Test#
Tras mucha investigación de como hacer los test unitarios sobre nuestra aplicación en GAE, lo hemos conseguido realizarlos con éxito.
Para ello hemos tenido que usar bastante información buscada por Internet, por lo que hemos tomado como referencia:
Nuestro test sirve para comprobar que nuestra apliacación se despliega correctamente y en caso de que sea así haga un "Deploy" de esta a GAE.
Para poder realizar este test, es necesario la configuración de 3 archivos que se deben de incorporar al repositorio del proyecto. Son los siguientes:
nose
coverage
NoseGAE
WebTest
import unittest
from google.appengine.ext import db
from google.appengine.ext import testbed
from index import Evenge
class EvengeTestCase(unittest.TestCase):
def setUp(self):
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_datastore_v3_stub()
def tearDown(self):
self.testbed.deactivate()
def test(self):
evenge = Evenge()
response = evenge.hazElCuadrado(4)
self.assertEqual(response,16)
if __name__ == "__main__":
unittest.main()
#Evenge - gestor de eventos (events management)
#Copyright (C) 2014 - [email protected]
#Carlos Campos Fuentes | Francisco Javier Expósito Cruz | Iván Ortega Alba | Victor Coronas Lara
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#################################################################
language: python
python:
- "2.7"
#Esto es para desplegar en App Engine
env:
global:
- GAE_DIR=/tmp/gae
- [email protected]
- secure: RACsb1T9/QPr32TxNHaQ5yqq/EyWXSFIKlmmh633cvxygeBt7UJoM674Pqkg2RfwHN4XJ+lrC8s4FDffixbK4OXKr7aW0lNjLNcdPM/1NgZC1mimNGG+UOB1sAMkLUO909V+pMHq53f5oYb+s3aHFukq9zG5+d7+yNZ89bb+lX4ujhFjxMTltT8OOuQvzFwRkOoTH7CdfJDUqeF+MABCuzOFq1ewU6j0QqTi4DtZP4ZNNMA/8b0935U2tOdFlbQ8Xx1ZTm6UFrMGEJGlfRJAOKls20mXiF3wudYSXEw69PztNyJ2vg+WL7oE6xUobJHXOLIReevDm7KrmEC8p7Re4w==
#Instalarse la mágina virtual GAE
before_install:
- >
test -e $GAE_DIR ||
(mkdir -p $GAE_DIR &&
wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.15.zip -q -O /tmp/gae.zip &&
unzip /tmp/gae.zip -d $GAE_DIR)
#Instalar requerimientos
install:
- pip install -r requirements.txt
before_script:
- echo 'Europe/Madrid' | sudo tee /etc/timezone
- sudo dpkg-reconfigure --frontend noninteractive tzdata
- mkdir -p shippable/testresults
- mkdir -p shippable/codecoverage
#Ejecutamos el script
script:
- >
nosetests test.py
--with-gae --without-sandbox --gae-lib-root=$GAE_DIR/google_appengine
--with-xunit --xunit-file=shippable/testresults/test.xml
--with-coverage --cover-xml --cover-xml-file=shippable/codecoverage/coverage.xml
#Si se construye bien hacer esto
after_success:
- $GAE_DIR/google_appengine/appcfg.py --oauth2_access_token=$GAE_TOKEN update .
El archivo más importante es "Shippable" que es el que se encarga de realizar el test con la ejecución del script: #Ejecutamos el script script: - > nosetests test.py --with-gae --without-sandbox --gae-lib-root=$GAE_DIR/google_appengine --with-xunit --xunit-file=shippable/testresults/test.xml --with-coverage --cover-xml --cover-xml-file=shippable/codecoverage/coverage.xml
Cada archivo viene comentado con todo lo que hace.
Estos test pueden ser usados por cualquiera, solo que deben de ser modificados para su correcto funcionamiento en su correspondiente aplicación.
#Ejecutar el test#
Antes de proceder a ejecutar el test debemos de estar logueados en Shippable y haber autorizado a "Shippable" entrar en nuestro repositorio de "GitHub".
Una vez dentro de "Shippable", nos encontramos con este panel, que nos muestra información del test:
Una vez realizado esto procedemos con con la ejecucion del test:
Lo primero que debemos de hacer es un "push" al repositorio y seguidamente hacer un "commit", entonces al realizar el "commit" es cuando se ejecuta el test, que lo ejecuta "shippable" ejecutando el script. Cuando termina de realizar el test nos muestra este log: Este log nos muestra el resultado del test, si ha habido algun error o fallo, asi como si esta todo bien, en esta caso esta bien y nos da "Passing".
En caso de que todo haya salido bien y nos encontremos en la rama master, se realiza un "Deploy" a GAE.
after_success:
- if [ "$BRANCH" == "master" ]; then $GAE_DIR/google_appengine/appcfg.py --oauth2_refresh_token=$GAE_TOKEN update . ; else echo "No deployment for this $BRANCH"; fi
Colabora con este proyecto a través de GitHub