2013-08-15 5 views
5

मैं फ्लास्क में अपनी अपलोड() विधि का परीक्षण करने की कोशिश कर रहा हूं। एकमात्र समस्या यह है कि फ्लास्क में फ़ाइलस्टॉरेज ऑब्जेक्ट में एक विधि सहेजने() है जिसमें पाइथन फ़ाइल ऑब्जेक्ट नहीं है।पाइस्कॉन फ़ाइल ऑब्जेक्ट फ्लास्क के फ़ाइल स्टोरेज

मैं इस तरह मेरी फ़ाइल बनाने:

file = open('documents-test/test.pdf') 

लेकिन क्योंकि उस विधि को बचाने का उपयोग करता है मैं अपने अपलोड() विधि परीक्षण नहीं कर सकते()।

कोई भी विचार इस फ़ाइल ऑब्जेक्ट को फ्लास्क फिलस्टोरेज ऑब्जेक्ट में कैसे परिवर्तित करें?

+0

हाय। मैं समझ नहीं पा रहा हूं कि आप यहां क्या करने की कोशिश कर रहे हैं। क्या आपका मतलब है कि फ़ाइल को फ्लास्क में पास किए बिना इसका परीक्षण करें? –

+0

मेरी हैंडल_उपलोड विधि एक फ़ाइल ऑब्जेक्ट को तर्क के रूप में लेती है। समस्या यह है कि इस फ़ाइल को फ्लास्क से फ़ाइल स्टोरेज ऑब्जेक्ट होना चाहिए और पायथन से फ़ाइल ऑब्जेक्ट नहीं होना चाहिए। यदि मैं वेबपृष्ठ पर फ़ाइल लोड करता हूं तो यह कोई समस्या नहीं है, लेकिन मैं विधि को अलग-अलग – arnoutaertgeerts

उत्तर

0

बोतल परीक्षण ग्राहक की get और post तरीकों हुड के नीचे werkzeug.test.EnvironBuilder आह्वान - इसलिए यदि आप अपने फाइल के साथ कीवर्ड तर्क data के रूप में एक शब्दकोश में पारित आप तो इसके साथ काम करने के लिए सक्षम होना चाहिए:

def test_upload(): 
    with open("document-test/test.pdf", "rb") as your_file: 
     self.app.post("/upload", data={"expected_file_key": your_file}) 
     # Your test here 
8

http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage

मैं परीक्षण ढांचे के बाहर एक उपयोगिता और आवेदन के लिए ही कुप्पी FileStorage वस्तु का उपयोग करने की जरूरत है, अनिवार्य रूप से नकल कैसे एक फ़ाइल अपलोड एक फ़ॉर्म का उपयोग करके काम करता है। यह मेरे लिए काम किया।

from werkzeug.datastructures import FileStorage 
file = None 
with open('document-test/test.pdf', 'rb') as fp: 
    file = FileStorage(fp) 
file.save('document-test/test_new.pdf') 
+2

पर परीक्षण करने में सक्षम होना चाहता हूं, अब http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage –

+0

@ न्यूरोस्नाप हमारे लिए फ़ाइल को रद्द करने और अजवाइन में पुनर्निर्माण करने का एक तरीका है? – user805981

+0

@ user805981 आप बेस 64 – Alp

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