2012-10-29 22 views
7

mi hanno una vista come tale:Django test memorizzati i dati di sessione nei test

def ProjectInfo(request): 
    if request.method == 'POST': 
     form = ProjectInfoForm(request.POST) 
     if form.is_valid(): 
      # if form is valid, iterate cleaned form data 
      # and save data to session 
      for k, v in form.cleaned_data.iteritems(): 
       request.session[k] = v 
      return HttpResponseRedirect('/next/') 
     else: 
      ... 
    else: 
     ... 

E nel mio test:

from django.test import TestCase, Client 
from django.core.urlresolvers import reverse 
from tool.models import Module, Model 
from django.contrib.sessions.models import Session 

def test_project_info_form_post_submission(self): 
    """ 
    Test if project info form can be submitted via post. 
    """ 
    # set up our POST data 
    post_data = { 
     'zipcode': '90210', 
     'module': self.module1.name, 
     'model': self.model1.name, 
     'orientation': 1, 
     'tilt': 1, 
     'rails_direction': 1, 
    } 
    ... 
    self.assertEqual(response.status_code, 302) 
    # test if 'zipcode' in session is equal to posted value. 

Così, dove l'ultimo commento è nel mio test, voglio prova se un valore specifico è nel dict session e che la chiave: l'accoppiamento del valore è corretto. Come faccio a fare questo? Posso usare request.session?

Qualsiasi aiuto molto apprezzato.

risposta

26

Secondo il docs:

from django.test import TestCase 

class SimpleTest(TestCase): 
    def test_details(self): 
     # Issue a GET request. 
     self.client.get('/customer/details/') 
     session = self.client.session 
     self.assertEqual(session["somekey"], "test") 
+0

Spot on. Deve averlo trascurato nei documenti! –

+0

Non vedo dove viene utilizzata la risposta. Ha bisogno di essere? – robline

+0

Inoltre non è necessario impostare 'self.client'in 'sUp()' perché' TestCase' lo fa già per te (vedi https://docs.djangoproject.com/en/1.11/topics/testing/tools/# default-test-client). Ho modificato la risposta. – LaundroMat

Problemi correlati