J'ai une application Pylons en stock créée en utilisant paster create -t pylons
avec un contrôleur et un test fonctionnel apparié, ajouté en utilisant paster controller
, et une table SQLAlchemy et une classe ORM mappée. La substance SQLAlchemy est définie dans la fonction init_model()
plutôt que dans la portée du module (et doit être présente). L'exécution python setup.py test
déclenche une exception car nose
provoque d'une manière ou d'une autre l'appel de init_model()
deux fois dans le même processus, il essaie donc de créer un modèle qui existe déjà.tests de nez de l'application Pylons avec des modèles dans init_model?
Je peux résoudre ce problème en définissant et en vérifiant une variable globale dans init_model()
, mais (a) je préfère ne pas, et (b) les bibliothèques tierces telles que AuthKit qui définissent dynamiquement les modèles rompent également les tests, et ne peut pas être si facilement changé.
Est-il possible de fixer nose
tests pour Pylônes, ou devrais-je écrire mon propre script de test et il suffit d'utiliser unittest
, loadapp
et webtest
directement? Des exemples de travail de cela?
Utilisation pdb a montré que les tests de stock/__ init__.py fournies par Paster a d'abord été en cours d'exécution de la commande application de configuration, puis en fait en cours d'exécution les tests, et cela représente init_model étant appelé deux fois. J'ai commenté la ligne d'installation-application, et tout fonctionne bien. Je suppose que la question restante est de savoir pourquoi Pascal met cela là quand cela ne semble pas nécessaire et ne fonctionne pas out-of-the-box. –
jasonjs: ma compréhension/supposition est que \ _ \ _ init \ _ \ _. Py essaye de créer les tables de base de données pour vous afin que vous n'ayez pas besoin d'exécuter le fichier test-setup test.ini manuellement avant de pouvoir exécuter les tests . –