2010-11-25 5 views
0

Je suis encore dans la phase de développement d'une application Django. Avant même d'écrire mon fichier views.py, je le teste pour voir si mes modèles sont correctement définis. Je le fais dans le terminal en invoquantTest de petits extraits de code Django

python manage.py shell

Mais oh si souvent je fais une erreur de syntaxe me invitant à abandonner la coquille ctrl-D & tout retaper. Ce processus prend une éternité. Il serait mieux si je pouvais écrire tout cela dans un fichier juste pour mes essais & si tout va bien le copier à views.py.

Quel est le processus pour cela? Est-ce aussi simple que de créer un trial.py dans mon répertoire app. N'aurai-je pas à importer l'environnement Django? Quelle est la meilleure façon de faire cela?

+3

Vous me dites que vous écrivez chaque partie de votre code dans l'interpréteur python avant de le mettre dans votre application? – Falmarri

+0

Exécutez python manage.py sql nom_app –

+1

"Retaper tout"? Avez-vous entendu parler de l'utilisation d'un "fichier" pour contenir votre source? Le tutoriel Django montre un bon moyen de le faire. Pourquoi ne suivez-vous pas le tutoriel Django? –

Répondre

2

par tous les moyens de créer un trial.py pour une expérimentation simple, puis après avoir fait

python manage.py shell 

vous pouvez faire

>>> import trial 

puis invoquer le code dans l'essai, directement à partir de l'invite, par exemple

trial.myfunc() 

Si vous avez besoin de changer les choses que vous pouvez simplement enregistrer votre trial.py changé et ne

reload(trial) 

Bien sûr, vous devrez peut-être recréer les objets existants dans la session interactive afin de faire utilisation de vos changements. Cela devrait être considéré comme complémentaire aux tests unitaires d'écriture (selon la réponse de Jani), mais je trouve cette approche utile pour essayer des choses en utilisant le raffinement itératif.

+1

Recharger des modèles ne fonctionne pas comme ça: http://stackoverflow.com/questions/890924/how-do-you-reload-a-django-model-module-using-the-interactive-interpreter-via-ma/3466579 # 3466579 –

+0

@Tomasz: D'accord, je pensais à des objets Python simples quand j'ai mentionné la recréation d'objets ... votre réponse liée à remplit la pièce manquante. –

5

Comment écrire des tests unitaires? Vous pouvez les exécuter facilement avec une commande. Vous pouvez probablement commencer en lisant le django manual chapter on testing

+0

les tests unitaires ne sont pas la même chose que d'essayer des fonctions dans shell - imaginez, vous savez que vos fonctions sont fausses, mais pour détecter une erreur, vous devez voir les résultats, alors, comment allez-vous le faire avec des tests unitaires? – ffriend

+0

Si un test échoue ne vous dit pas ce qui ne fonctionne pas dans votre fonction, alors ce n'est pas un test assez précis. –

1

Créez votre fichier pour tests dans le répertoire du projet Django et le chemin ajouter à votre projet à Env variables:

import sys 
sys.path.append(os.path.realpath(os.path.dirname(__file__))) 

Après cela, vous serez en mesure d'importer un module du projet (par exemple les modèles de models.py ou simplement des fonctions de views.py) et utilisez votre IDE préféré avec son éditeur et shell.

1

Pour les cas plus simples, vous pouvez utiliser le module complémentaire django-extensions qui contient la commande de gestion shell_plus qui est similaire à la commande standard shell mais qui précharge tous les modèles.

0

J'ai aussi eu ce problème avant,

peut-être vous pouvez installer ipython, qui a une fonction magique appelée comme ceci:

% d'économie.

Cela permettra d'enregistrer ce que vous entrez dans un fichier.Et ipython est un outil très charmant, qui peut prendre la palce de l'invite de python standard parfaitement .. Il a aussi d'autres choses merveilleuses!

Et django, si vous avez installer ipython, lorsque vous manage.py shell python entrée,

il appellera ipython directement.

Questions connexes