2009-12-09 3 views
3

Je lance mon application Google moteur d'application dans l'une des deux façons ...Pourquoi les données n'apparaissent-elles pas dans la console Google App Engine * Development *?

  1. directement en utilisant l'application de http://localhost:8080
  2. ou d'exécuter des tests unitaires de http://localhost:8080/test

Lorsque je crée des entités par si vous utilisez directement l'application, les données sont visibles dans la console de développement (vue stock de données).

Cependant, lorsque j'exécute les tests unitaires ... même s'ils réussissent et que je peux mettre() et obtenir() des données, les données n'apparaissent pas dans la vue stock de données. Une idée de pourquoi je ne peux pas voir mes données? Même si c'est là?

Notes:

  • J'utilise GAEUnit pour les tests unitaires.
  • Les données stockées sont principalement constituées de StringProperties().
  • J'utilise Python et exécute Django en plus du GAE, je ne sais pas si c'est important.
+0

Pourriez-vous s'il vous plaît indiquer si vous utilisez 'fixture' ou un autre cadre de montage de modèle. Ceux-ci peuvent supprimer les anciennes données une fois la suite de tests exécutée. Ou si tout est roulé à la main par vous, cela pourrait aussi être utile. – JasonSmith

+0

Bon point jhs. J'utilise GAEUnit. – willem

Répondre

2

GAEUnit crée sa propre datastore stub proxy, en utilisant ce code sur la ligne 357 du courant « 2.0a pour django » version:

temp_stub = datastore_file_stub.DatastoreFileStub(
    'GAEUnitDataStore', None, None, trusted=True) 

Ce magasin de données proxy est uniquement conservé en mémoire, il est donc supprimé une fois les tests terminés. Il est également vide lorsque les tests commencent à s'exécuter, c'est-à-dire qu'il ne contient aucune donnée actuellement dans le magasin de données de développement par défaut.

Vous pouvez modifier temporairement ceci pour lui faire écrire dans un fichier sur votre système de développement, par exemple:

temp_stub = datastore_file_stub.DatastoreFileStub(
    'GAEUnitDataStore', '/path/to/gaeunit.datastore', None, trusted=True) 

Ensuite, exécutez dev_appserver.py sur un autre port, par exemple:

dev_appserver.py --port=8081 --datastore_path=/path/to/gaeunit.datastore /path/to/application/ 

Et Enfin, ouvrez http://localhost:8081/_ah/admin dans un navigateur pour afficher le contenu du magasin de données temporaire.

+0

Génial, merci pour le conseil! – willem

3

Y at-il une chance que votre vue Dev Console DataStore examine une banque de données différente de celle dans laquelle votre application django écrit? J'ai rencontré un problème similaire avec mon installation Django/GAE et l'ai résolu en indiquant explicitement l'emplacement de ma banque de données lors du démarrage du serveur de développement. Pour démarrer le serveur dev cette façon, allez dans le répertoire de votre projet django et tapez:

dev_appserver.py --datastore_path=/path/to/datastore/my_datastore --history_path=/path/to/datastore/my_datastore 
+0

Je pense que vous pouvez être sur quelque chose. J'ai essayé ceci, mais j'ai ajouté un chemin incorrect. Mon application a échoué (comme elle aurait dû l'être), mais mes tests ont quand même réussi, donc pour une raison quelconque mes tests semblent utiliser un chemin de banque de données différent. Va enquêter ... – willem

+0

Oui, il semble que GAEUnit initialise son propre stub de banque de données. Je ne sais pas si c'est le même que le service standard de google dev. De toute façon, il est initialisé avec un chemin d'application différent, donc j'ai besoin de comprendre comment le pointer vers le même magasin de données. Merci pour l'aide! – willem

+0

De rien. Je suis heureux de pouvoir vous orienter dans la bonne direction! – Spike