Skip to content
franexposito 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, 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()
      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