[英]How to test template context variables with Flask
Django的測試客戶端返回一個測試Response對象,該對象包含用於呈現模板的模板上下文變量。 https://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Response.context
在Flask中測試時如何訪問模板上下文變量?
示例視圖:
@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')
感謝@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')
根據這些有限的信息,我建議將生成上下文的代碼分解為一個單獨的單元並直接測試。 映射上面的示例:
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())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.