2012-02-12 28 views
7

में एक स्ट्रिंग या एक नंबर, नहीं 'AnonymousUser' होना चाहिए मैं अपने आवेदन का परीक्षण किया गया है और त्रुटि है कि आवेदन के साथ ही कोई लेना देना नहीं लगती में अटक गई।लेखन त्रुटि: पूर्णांक() तर्क Django

class TagSaveAndLoadTest(TestCase): 
    fixtures = ['users.json'] 

    def setUp(self): 
     self.client = Client() 
     self.client.login(user='test_user', password='123') 

    def test_register_save(self): 
     tag_dict = { 
         'sex' : 4, 
         'drugs' : 3, 
         'rocknroll' : 1, 
        } 
     response = self.client.post('/register/save_tags/', {'skilltags' : json.dumps(tag_dict)}) 
     self.assertEqual(response.status_code, 200) 

त्रुटि मैं मिलता है: TypeError: int() argument must be a string or a number, not 'AnonymousUser' मैं इस तरह एक इकाई परीक्षण किया है। ट्रेसबैक में दिखाई देने वाली फ़ाइलें base.py, manages.py, query.py इत्यादि हैं। ऐसा लगता है कि मेरा अनुरोध मिडलवेयर में कहीं भी अटक गया है, और मुझे नहीं पता कि इससे कैसे निपटना है। अनुरोध के लिए मेरे विचार या यहां तक ​​कि नियंत्रक तक पहुंचने के लिए यह भी संभव नहीं है? अगर 'setUp()' फ़ंक्शन एक परीक्षण उपयोगकर्ता लॉग करता है तो AnonymousUser के साथ कोई समस्या क्यों है?

पूर्ण ट्रैस बैक here पाया जा सकता है, अग्रिम धन्यवाद!

उत्तर

4

ट्रेसबैक द्वारा बहुत डरने की कोशिश न करें। यदि आप सभी Django internals के पीछे पर्याप्त उच्च दिखते हैं, तो आपको जो जानकारी चाहिए वह वहां है। अनुरोध आपके विचार तक पहुंच रहा है, समस्या मिडलवेयर में नहीं है। ऐसा लगता है कि client.login कॉल काम नहीं कर रहा है। निम्नलिखित फ़िल्टर बयान में विफल रहता है क्योंकि request.user एक एक अनाम उपयोगकर्ता

Skill.objects.filter(user=request.user).delete() 

मुद्रण अपने परीक्षण में client.login लाइन का प्रयास है। यदि यह सफलतापूर्वक उपयोगकर्ता को लॉग इन करता है तो यह सही होगा। अगर यह काम नहीं करता है, तो जांचें:

  1. आप अपने जुड़नार के लिए सही उपयोगकर्ता नाम और पासवर्ड का उपयोग कर रहे हैं।
  2. आप उपयोगकर्ता फिक्स्चर सफलतापूर्वक लोड कर रहे हैं। क्या आपके पास सही फ़ाइल नाम है? Django सम्मेलन के बिना user.json है।
  3. सुनिश्चित करें कि आपकी टेस्ट क्लास Django TestCase क्लास को उप-वर्गीकृत करती है ताकि फिक्स्चर लोड हो जाएं।
2

समस्या कोड की इस पंक्ति में है:

File "E:\ev\site\project\..\project\jobs\views.py", line 69, in post 
    Skill.objects.filter(user=request.user).delete() 

आप ORM में एक स्तंभ शर्त के मूल्य के रूप में एक उपयोगकर्ता वस्तु गुजर रहे हैं। क्या यह आपका विचार नहीं है?

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