
172
|
第
15
章
试。但遗憾的是,并非应用的所有组成部分都像数据库模型那样易于测试。在接下来的两
节中,我们将介绍更高级的测试策略,可用于测试视图函数、表单和模板。
15.2
Flask
测试客户端
应用的某些代码严重依赖运行中的应用所创建的环境。例如,你不能直接调用视图函数中
的代码进行测试,因为这个函数可能需要访问
Flask
上下文变量,如 request 或 session;
视图函数可能还等待接收 POST 请求中的表单数据,而且某些视图函数要求用户先登录。简
而言之,视图函数只能在请求上下文和运行中的应用里运行。
Flask
内建了一个
测试客户端
用于解决(至少部分解决)这一问题。测试客户端能复现应
用运行在
Web
服务器中的环境,让测试充当客户端来发送请求。
在测试客户端中运行的视图函数和正常情况下的没有太大区别,服务器收到请求,将其分
派给合适的视图函数,视图函数生成响应,将其返回给测试客户端。执行视图函数后,生
成的响应会传入测试,检查是否正确。
15.2.1
测试
Web
应用
示例
15-2
是一个使用测试客户端编写的单元测试框架。
示例
15-2
tests/test_client.py
:使用
Flask
测试客户端编写的测试框架
import unittest
from app import create_app, db
from app.models import User, Role
class FlaskClientTestCase(unittest.TestCase):
def setUp(self): ...