2011-08-19 12 views
15

Django 1.3 के परीक्षण ढांचे (टेस्टकेस) का उपयोग करके, मैं स्थैतिक फाइलों पर कुछ परीक्षण चलाने के लिए चाहता हूं (यानी, फ़ाइलों को प्रोजेक्ट पर डीजेंगो द्वारा स्वयं की सेवा नहीं की जाती है, लेकिन इसे डीबग (रनरवर) के लिए परोसा जा सकता है))। लेकिन अगर मैंDjango: स्थिर फाइलों का परीक्षण

चलाने ... मैं एक 404 त्रुटि मेरी परीक्षणों में मिलता है। (बेशक, यह फ़ाइल रनरवर पर उपलब्ध है)

क्यों नहीं, लेकिन मेरी स्थिर फाइलों में इस जेसन स्कीमा की उपस्थिति की जांच करने का सबसे अच्छा तरीका क्या होगा? (मेरे मामले में, मैं भी एक उत्पन्न json उत्पादन के खिलाफ इस सार्वजनिक json स्कीमा परीक्षण करना चाहते हैं, तो मैं फ़ाइल की सामग्री चाहते हैं)

+5

यह इसलिए होता है, क्योंकि [Django 'डीबग के साथ चलाने के परीक्षण = FALSE' हमेशा की तरह, अपनी सेटिंग्स पर ध्यान दिए बिना] (https://docs.djangoproject.com/en/dev/topics/testing/#other-test-conditions)। मुझे यकीन नहीं है कि आपको क्या करना चाहिए, इसलिए वास्तविक उत्तर की प्रतीक्षा करें: –

+1

मेरे पास एक परिदृश्य था जहां मुझे 'सेटिंग्स.DEBUG = गलत' सेट करना पड़ा। यह django.test.utils से override_settings आयात करें और फिर '@override_settings (DEBUG = True)' [django दस्तावेज़ीकरण] के साथ परीक्षण को सजाने के द्वारा संभव है (https://docs.djangoproject.com/en/1.4/topics/ परीक्षण/# ओवरराइडिंग-सेटिंग्स) – DMfll

उत्तर

6

एक अन्य विधि जो मैं थोड़ा आसान लगता है के रूप में वहाँ कम है टाइप करने के लिए/आयात:

from django.contrib.staticfiles import finders 

result = finders.find('css/base.css') 

यदि स्थैतिक फ़ाइल मिली, तो यह फ़ाइल के लिए पूरा पथ वापस कर देगा। अगर नहीं मिला, यह वापस आ जाएगी None

स्रोत:

searched_locations = finders.searched_locations 
: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#finders-module


Django 1.7+ के रूप में, आप भी बाहर जहां Django ढूँढ़ने वाले मॉड्यूल के माध्यम से देख रहा है/परीक्षण पा सकते हैं

Django द्वारा प्रदान किए गए SimpleTestCase.assertTemplateUsed(response, template_name, msg_prefix='') दावे के अलावा, आप प्रतिक्रिया प्रस्तुत करने के लिए उपयोग किए गए टेम्पलेट्स की एक सूची प्राप्त करने के लिए प्रतिक्रिया वर्ग से response.templates का उपयोग भी कर सकते हैं।

स्रोत: https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.Response.templates

+0

यह अपलोड की गई सामग्री के लिए मेरे परीक्षण में एक SuspiciousFileOperation फेंकता है –

8

कैसे इस बारे में:

from django.contrib.staticfiles import finders 
from django.contrib.staticfiles.storage import staticfiles_storage 

absolute_path = finders.find('somefile.json') 
assert staticfiles_storage.exists(absolute_path) 

यह StaticFiles ढूँढ़ने का उपयोग करता है 'somefile.json' नामक फ़ाइल ढूंढने के लिए और तब जांचता है कि फ़ाइल आपके द्वारा कॉन्फ़िगर किए गए संग्रहण पर वास्तव में मौजूद है या नहीं?

+0

जैसा कि मैंने आशा की थी उतनी पारदर्शी नहीं है लेकिन इसे काम करना चाहिए।मैं इसे जल्द ही सत्यापित करने की कोशिश करूंगा। Thx – smad

2

isbadawi टिप्पणी के रूप में, परीक्षण सर्वर हमेशा DEBUG = False साथ चलाता है। तो आप स्थैतिक फ़ाइलों के DEBUG हैंडलिंग पर भरोसा नहीं कर सकते हैं, आपको उन्हें खोजने के लिए परीक्षण के लिए उन्हें संभालने के एक स्पष्ट उत्पादन-जैसे तरीके की आवश्यकता है। आपको लगता है कि जब आप test चलाने के लिए विकास serve() चालू हो जाती है अपने urls.py में एक विशेष खंड हो सकता है:

if 'test' in sys.argv: 
    static_url = re.escape(settings.STATIC_URL.lstrip('/')) 
    urlpatterns += patterns('', 
     url(r'^%s(?P<path>.*)$' % static_url, 'django.views.static.serve', { 
      'document_root': settings.STATIC_ROOT, 
     }), 
    ) 
संबंधित मुद्दे