Skip to content
VictorCoronas edited this page Dec 17, 2014 · 12 revisions

#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:

  • requeriments.txt

    nose
    coverage
    NoseGAE
    WebTest
    
  • test.py 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()
    
  • shippable.yaml #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". TEST

Una vez dentro de "Shippable", nos encontramos con este panel, que nos muestra información del test:

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: TEST 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

Aplicación

Clone this wiki locally