मैंने इस उम्र के जवाब की तलाश में एक उम्र लीअब मैंने इसे समझ लिया है मैं इसे भविष्य के उपयोगकर्ताओं के लिए यहां डाल रहा हूं। मैं पाइथन 2.7 और Django 1.5 का उपयोग कर रहा हूं लेकिन यह जवाब पाइथन 3+ और Django 1.6+ के लिए भी काम करना चाहिए
समस्या
मेरे पास एक मॉडल है जिसमें एक शामिल है FileField
। मैं एक का उपयोग कर रहा हूँ ModelForm
उपयोगकर्ताओं को इस मॉडल के उदाहरण जोड़ने दें। मैं चाहता हूं कि मेरे सभी ऐप का कोड परीक्षण के अधीन हो, जिसमें किसी भी रूप शामिल हैं। डेटा पथ में फ़ाइल पथ, फ़ाइल ऑब्जेक्ट्स या बाइट स्ट्रिंग पास करना वैध रूप में नहीं होता है।
प्रश्न
मैं एक पर सत्यापन का परीक्षण कैसे करूं? ModelForm
ए सहित FileField
?
उत्तर:
जवाब के लिए 0 № 1आप से जवाब का अनुमान लगा सकते हैं Django के दस्तावेज। चाल यह है कि आप पास नहीं करते हैं FileField
आपके शेष फॉर्म डेटा के समान शब्दकोश में डेटा। इसके बजाए, आपका test_forms.py
कुछ ऐसा दिखना चाहिए:
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
class CorrespondenceFormTest(TestCase):
def setUp(self):
...
def test_correspondence_form_with_good_data(self):
data = {
"direction": "OU",
"incoming_mail_type": "",
"outgoing_mail_type": "CL",
}
file_data = {
"correspondence_file": SimpleUploadedFile("test.txt", "Hi!")
}
form = CorrespondenceForm(data, file_data)
self.assertTrue(form.is_valid())
यह निकल जाएगा। अब आप उन चीजों के लिए अतिरिक्त परीक्षण लिख सकते हैं जिन्हें आप आत्मविश्वास से विफल करना चाहते हैं कि वे सही कारण से विफल हो जाते हैं।