2012-05-21 15 views
10

ile nasıl test edilir? Django'nun test istemcisi, şablonu oluşturmak için kullanılan şablon bağlamı değişkenlerini içeren bir test Response nesnesini döndürür. https://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Response.contextŞablon içeriği değişkenleri Flask

Flask'ta test ederken şablon bağlam değişkenlerine nasıl erişebilirim?

Örnek görünüşüdür:

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

Örnek testi: Bu sınırlı bilgilerden

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') 

cevap

22

sayesinde (bir versiyonu) 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

, doğrudan ayrı bir birim ve teste bağlam üreten kod kırma öneriyoruz. Yukarıdaki örnek Haritalama: kullandığım @andrewwatts için

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

şablon bağlam görünümü işlevi/yöntem içinde oluşturulmalıdır. Sadece test için dışarıda yerleştirmek iyi bir yol değildir. Daha iyi bir yol bağlamı [flask-test] ile test etmektir (http://packages.python.org/Flask-Testing/). – Jarus