2013-02-05 69 views
6

में सत्र ऑब्जेक्ट का उपयोग करके मैं एक लॉगिन दृश्य लिख रहा हूं और दृश्य के लिए एक यूनिट परीक्षण जोड़ना चाहता हूं। मेरा विचार इस तरह दिखता है:Django इकाई परीक्षण

def login(request): 

    if request.POST: 
      usrname = request.POST.get('username') 
      password = request.POST.get('password') 
      user = authenticate(username=usrname, password=password) 

      if user is not None: 
        auth_login(request, user) 
        return redirect('/core/home/') 
      else: 
        context = {'error_message': "Invalid username or password"} 
        return render(request, 'core/login.html', context) 
    else: 
      c = {} 
      c.update(csrf(request)) 
      return render_to_response('core/login.html',c) 

def home(request): 
    if request.user.is_authenticated(): 
     context = {'user' : request.user} 
     return render(request, 'core/home.html', context) 
    else: 
     return render(request, 'core/login.html') 

और मेरी इकाई परीक्षण इस तरह दिखता है: क्योंकि

class CoreViewTests(TestCase): 
    def setUp(self): 
      self.factory = RequestFactory() 

    def test_login_view_with_valid_user(self): 
      uf = UserFactory() 
      user = uf.make_user("ValidUser1", "12345", "[email protected]") 
      self.assertEqual(user.username, "ValidUser1") 
      request = self.factory.post('/core/login', {"username": "ValidUser1", "password": "12345"}) 
      response = login(request) 
      self.assertEqual(response.status_code, 200) 

इकाई परीक्षण दुर्घटना वे सत्र वस्तु नहीं मिल रहा। मैं डमी सत्र शब्दकोश परिभाषित करके वेबसाइटों पर दो ट्यूटोरियल का पालन करता हूं लेकिन इससे मदद नहीं मिलती है।

क्या कोई मेरे लिए कुछ प्रकाश डाला सकता है कि सत्र ऑब्जेक्ट से निपटने के लिए एक यूनिट परीक्षण कैसे लिखना है?

धन्यवाद।

+0

क्या यह आपका सटीक कोड है? आपके पास इस लाइन 'अनुरोध = self.factory.post ('/core/login ', {"username": "ValidUser1", "password": "12345") पर एक अनजान शब्दकोश है - यह 'अनुरोध = स्वयं होना चाहिए .factory.post ('/ core/login', {"username": "ValidUser1", "पासवर्ड": "12345",}) ' –

+0

हां यह है, मैं रिपो से अपना कोड कॉपी करता हूं। जब मैं चेक इन करता हूं तो शायद मेरे पास टाइपो था। –

+0

तो क्या आपको अभी भी कोड को सही करने में त्रुटि मिलती है? –

उत्तर

7

RequestFactory वस्तु के लिए दस्तावेज़ से:

यह मिडलवेयर समर्थन नहीं करता। उचित रूप से कार्य करने के लिए आवश्यक होने पर सत्र और प्रमाणीकरण विशेषताओं को परीक्षण द्वारा ही आपूर्ति की जानी चाहिए।

आप उचित रूप से request.session को उचित सामग्री के साथ एक शब्दकोश होने के लिए मैन्युअल रूप से सेट करने का प्रयास कर सकते हैं, जैसा कि आप कहते हैं। हालांकि पुराने-पुराने Django test client का उपयोग करना आसान हो सकता है।

+0

[mock] (https://pypi.python.org/pypi/mock) लाइब्रेरी का उपयोग करें। –