2012-10-29 4 views
7

Ich habe einen Blick als solche:Django Test gespeichert Sitzungsdaten in Tests

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: 
     ... 

Und in meinen Tests:

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. 

Also, wo der letzte Kommentar in meinem Test ist, möchte ich Testen Sie, ob ein bestimmter Wert in session dict ist und dass die Paarung Schlüssel: Wert korrekt ist. Wie gehe ich vor? Kann ich request.session verwenden?

Jede Hilfe sehr geschätzt.

Antwort

26

Nach dem 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. Das muss in der Dokumentation übersehen worden sein! –

+0

Ich sehe nicht, wo die Antwort verwendet wird. Muss es sein? – robline

+0

Sie müssen auch 'self.client'in'setUp() 'nicht setzen, weil' TestCase' das bereits für Sie erledigt (siehe https://docs.djangoproject.com/en/1.11/topics/testing/tools)/# Standard-Test-Client). Ich habe die Antwort bearbeitet. – LaundroMat

Verwandte Themen