On Nov 25, 11:01 pm, Julien Phalip <[EMAIL PROTECTED]> wrote: > On Nov 25, 10:56 pm, Malcolm Tredinnick <[EMAIL PROTECTED]> > wrote: > > > > > On Tue, 2008-11-25 at 20:47 +0900, Russell Keith-Magee wrote: > > > On Tue, Nov 25, 2008 at 8:40 PM, Julien Phalip <[EMAIL PROTECTED]> wrote: > > > > > Hi, > > > > > I've got a view which uses a different template depending on an input > > > > parameter. For example: > > > > > def my_view(request, theme): > > > > ... > > > > return render_to_response('my_app/%s/page.html' %s theme, {...}) > > > > > I would like to write some tests for this view, but I couldn't find > > > > any clean way to do so. So far, the only way I've found was to create > > > > a fake folder in the app's templates: > > > > > my_app/ > > > > templates/ > > > > my_app/ > > > > test_blah/ > > > > page.html > > > > models.py > > > > tests.py > > > > views.py > > > > > And then I can test the view by sending it the parameter 'test_blah'. > > > > It works fine, but it means I have to ship my app with that dirty > > > > "test_blah" folder. > > > > > Is there any other way to proceed? > > > > Check out django.contrib.auth.tests.views.py. The ChangePasswordTest > > > does some fancy footwork during the setUp and tearDown to install some > > > templates for testing purposes. You still need to ship the templates > > > as part of your project tarball, but they don't need to be in a > > > production-visible location - you can hide them away as part of the > > > testing infrastructure. > > > Another approach is to write a custom template loader that is used in > > your test settings file. There's nothing to say a template loader has to > > actually load a file. It has to return a template, given the name. You > > can do that however you like. > > > Regards, > > Malcolm > > Thanks also for this tip, Malcolm. Both approaches are quite elegant.
I should add that the trickery used in ChangePasswordTest might be slightly better because it means the tests are self-contained, and so they don't depend on external parameters (e.g. the tests settings). The big advantage I see is that it makes the app more portable, at least as far as tests are concerned. Just tried it and it works like a charm! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---