2010-12-15 74 views
0

J'ai une suite de tests App Engine qui sont appelés en utilisant nez. Lorsque je les exécute à partir d'un terminal, chaque test se termine avec succès et tous les rapports, comme couverture, sont générés.Est-il possible d'exécuter des tests GAE dans Hudson?

Cependant, si je tente d'appeler la même commande d'Hudson, je reçois l'échec de la couverture suivante:

nose.failure.Failure.runTest (from Failure) 

Parent module 'coverage' not loaded 
-------------------- >> begin captured logging << -------------------- 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/NoseGAE-0.1.7-py2.5.egg', '') 
root: WARNING: Could not read datastore data from /tmp/nosegae.datastore 
root: WARNING: Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named Image 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/gaetestbed-0.12dev_r30-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebTest-1.2.1-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebOb-0.9.8-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/PyYAML-3.09-py2.5-linux-x86_64.egg', '') 
root: DEBUG: Could not import "strop": Disallowed C-extension or built-in module 
--------------------- >> end captured logging << --------------------- 

Cependant, si je retire l'appel à couverture, mes tests échouent toujours.

J'ai couru avec succès des projets Python avec Hudson. Y a-t-il une nuance GAE qui me fait trébucher?

Répondre

1

Comparez les environnements lorsque vous les exécutez manuellement à ceux que vous utilisez avec hudson.

Je suspecte que l'initialisation se passe dans le fichier .profile. Ce n'est pas appelé quand Hudson engendre un shell. Donc soit vous mettez cette initialisation dans l'initialisation de l'environnement ou vous appelez le fichier .profile manuellement dans les étapes de construction effectuées.

+0

Je n'ai pas de fichier .profile, juste .bashrc, dont les variables sont prises en compte. Dois-je utiliser .profile à la place? Est-ce un fichier système qui est supposé être stocké dans/etc /? –

+0

J'ai trouvé que définir les chemins explicites dans chacune des étapes Hudson résout tous les problèmes que j'ai. Par exemple, PYTHONPATH =.: $ HOME/dev/modules/contrib: $ HOME/dev/sdks/google_appengine. C'est un peu lourd, mais ça marche. Merci de m'avoir indiqué la bonne direction. –

+0

Vous pouvez éviter de définir la variable d'environnement pour chaque étape de construction. Vous pouvez définir des variables d'environnement dans la configuration principale d'Hudson. Cette variable d'environnement sera ensuite définie pour chaque travail. Cela peut également être fait au niveau du nœud (j'utilise cette approche). Il y a aussi un plugin, qui vous donne la possibilité de définir des variables au niveau du Job. Cela rend un peu plus facile que de le mettre dans chaque étape. :) –