2012-05-21 21 views
10

के साथ टेम्पलेट संदर्भ चर का परीक्षण कैसे करें Django का परीक्षण क्लाइंट एक परीक्षण प्रतिक्रिया ऑब्जेक्ट देता है जिसमें टेम्पलेट संदर्भ चर शामिल हैं जिनका उपयोग टेम्पलेट को प्रस्तुत करने के लिए किया गया था। https://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Response.contextफ्लास्क

फ्लास्क में परीक्षण करते समय मैं टेम्पलेट संदर्भ चर तक पहुंच कैसे प्राप्त कर सकता हूं?

उदाहरण दृश्य:

@pgt.route('/myview') 
def myview(): 
    context = { 
     'var1': 'value 1', 
     'var2': 'value 2', 
     'var3': 'value 3', 
    } 
    return render_template('mytemplate.html', **context) 

उदाहरण परीक्षण:

class MyViewTestCase(unittest.TestCase): 
    def setUp(self): 
     self.app = create_app() 
     self.client = self.app.test_client() 

    def test_get_success(self): 
     response = self.client.get('/pgt/myview') 

     # I don't want to do this 
     self.assertIn('value 1', response.data) 

     # I want to do something like this 
     self.assertEqual(response.template_context['var1'], 'value 1') 

उत्तर

22

धन्यवाद @andrewwatts को मैं प्रयोग किया जाता है (के एक संस्करण) Flask-Testing

from flask.ext.testing import TestCase 


class MyViewTestCase(TestCase): 
    def create_app(self): 
     # This method is required by flask.ext.testing.TestCase. It is called 
     # before setUp(). 
     return create_app() 

    def test_get_success(self): 
     response = self.client.get('/pgt/myview') 
     self.assertEqual(self.get_context_variable('var1'), 'value 1') 
-1

इस सीमित जानकारी से, मैं एक अलग इकाई और परीक्षण है कि सीधे संदर्भ उत्पादक कोड तोड़ने सुझाव है। ऊपर के उदाहरण का मिलान:

def get_context(): 
    context = { 
     'var1': 'value 1', 
     'var2': 'value 2', 
     'var3': 'value 3', 
    } 
    return context 

@pgt.route('/myview') 
def myview(): 
    return render_template('mytemplate.html', **get_context()) 
+1

टेम्पलेट संदर्भ दृश्य समारोह/विधि के अंदर बनाई जानी चाहिए। केवल परीक्षण के लिए इसे बाहर रखने के लिए एक अच्छा तरीका नहीं है। [फ्लास्क-परीक्षण] (http://packages.python.org/Flask-Testing/) के माध्यम से संदर्भ का परीक्षण करने का बेहतर तरीका है। – Jarus