2010-09-08 6 views

Répondre

2

Vous pouvez extraire le nom de la fonction de vue thusly

from django.test.client import Client 
c = Client() 
response = c.get('/') 
from django.core.urlresolvers import resolve 
resolve(response.request["PATH_INFO"])[0].func_name 
+0

wow, cela ressemble un peu hackish, mais oui, cela fonctionne. Il utilise la fonction de résolution pour obtenir le modèle d'URL correspondant. Mais il n'y a pas de problème à ce sujet, car c'est exactement le contraire de django qui fonctionne lors de la résolution de l'URL. Merci! – pcv

1

La réponse de Dave implique une requête HTTP à chaque fois que vous testez une URL, qui peut être lent. Si vous voulez juste savoir ce que afficher une URL pour résoudre, vous pouvez le faire sans utiliser Client:

>>> from django.core.urlresolvers import get_resolver 
>>> from myapp.views import func_to_test 
>>> resolver = get_resolver(None) 
>>> match = resolver.resolve('/some/path/') 
>>> if match.func is func_to_test: 
>>> print "correct function for resolution!" 

Ryan Wilcox's post on route testing va plus en détail et fournit des techniques pour le rendre encore plus facile de les tester.

Questions connexes