2013-05-09 3 views
24

मैं RequestFactory उपयोग करने के लिए निम्न परीक्षण का मामला साथ एक DetailView परीक्षण करने के लिए कोशिश कर रहा हूँ:मैं Django में RequestFactory का उपयोग करके एक पीके पास या एक विवरण दृश्य में कैसे स्लग कर सकता हूं?

def test_device_homepage(self): 
    request = self.factory.get('/devices/1/', {'pk': 1}) 

    response = DeviceView.as_view()(request) 

    self.assertEqual(response.status_code, 404) 

जब मैं ऊपर परीक्षण चलाने, फिर भी, मैं निम्न त्रुटि संदेश मिलता है:

AttributeError: Generic detail view DeviceView must be called with either an object pk or a slug. 

हैं मैं निर्माण के बाद अनुरोध प्रिंट, मैं निम्नलिखित देख सकते हैं:

<WSGIRequest 
path:/devices/1/, 
GET:<QueryDict: {u'pk': [u'1']}>, 

जहां तक ​​मेरा बता सकते हैं, बस इतना ही है कि DetailView अनुरोध किया जाना चाहिए उपरोक्त त्रुटि संदेश उत्पन्न करने वाले कोड में बिंदु के पीछे प्रगति करने में सक्षम होना चाहिए।

पूर्णता के लिए पूर्ण ट्रैस बैक नीचे है:

Traceback (most recent call last): 
File "/vagrant/devices/tests/test_views.py", line 17, in test_device_homepage 
response = DeviceView.as_view()(request) 
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 68, in view 
return self.dispatch(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 86, in dispatch 
return handler(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/detail.py", line 108, in get 
self.object = self.get_object() 
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/detail.py", line 48, in get_object 
% self.__class__.__name__) 

उत्तर

49

Freenode IRC पर #django चैनल के लिए धन्यवाद, मैंने पाया निम्नलिखित विधि मानकों को देखने के लिए के माध्यम से सभी तरह से पारित करने के लिए सही एक है:

response = DeviceView.as_view()(request, pk=1) 

मैं इस में मदद करता है किसी और RequestFactory उपयोग करने के लिए DetailView या DeleteView आदि

+0

इस के लिए धन्यवाद परीक्षण करने के लिए प्रयास कर रहा है उम्मीद है, अच्छी तरह से काम करता है! – Matt

+0

धन्यवाद .. यह आकर्षण की तरह काम करता है! – user01

संबंधित मुद्दे

 संबंधित मुद्दे