单元测试是对最小软件开发单元的测试,其重点测试程序的内部结构,主要采用白盒测试方法,由开发人员负责 。单元测试的主要目标是保证函数在给定的输入状态下,能够得到预想的输出,在不符合要求时能够提醒开发人员进行检查 。
Flask提供了一个与Python自带的单元测试框架unitest无缝衔接的测试接口,即Flask对象的test_client()函数 。通过test_client()函数,测试程序可以模拟进行HTTP访问的客户端来调用Flask路由处理函数,并且获取函数的输出来进行自定义的验证 。
使用Jinja2模板
将HTML页面与后台应用程序联系起来一直是网站程序框架的一个重要目标 。Flask通过使用Jinja2模板技术解决了这个问题 。Jinja2是一个非常灵活的HTML模板技术,它是从Django模板发展而来的,但是比Django模板使用起来更加自由且更加高效 。Jinja2模板使用配制的语义系统,提供灵活的模板继承技术,自动抗击XSS跨站攻击并且易于调试 。
完全兼容WSGI 1.0标准
WSGI(Web Server Gateway Interface)具有很强的伸缩性且能运行于多线程或多进程环境下,因为Python线程全局锁的存在,使得WSGI的这个特性至关重要 。WSGI已经是Python界的一个主要标准,各种大型网路服务器对其都有良好的支持 。WSGI位于Web应用程序与Web服务器之间,与WSGI完全兼容使得Flask能够配置到各种大型网络服务器中 。
基于Unicode编码
Flask是完全基于Unicode的 。这对制作非纯ASCII字符集的网站来说非常方便 。HTTP本身是基于字节的,也就是说任何编码格式都可以在HTTP中传输 。但是,HTTP要求在HTTP Head中显式地声明在本次传输中所应用的编码格式 。在默认情况下,Flask会自动添加一个UTF-8编码格式的HTTP Head,使程序员无须担心编码的问题 。
底层自定义协议网络框架——Twisted
以上讲到的3个Python Web框架都是围绕着应用层HTTP展开的,而Twisted是一个例外 。Twisted是一个用Python语言编写的事件驱动的网络框架,对于追求服务器程序性能的应用,Twisted框架是一个很好的选择 。
Twisted是一个有着10多年历史的开源事件驱动框架 。Twisted支持很多种协议,包括传输层的UDP、TCP、TLS,以及应用层的HTTP、FTP等 。对于所有这些协议,Twisted提供了客户端和服务器方面的开发工具 。
Twisted框架的历史悠久,其主要发行版本都以Python 2为基础,最新的版本为基于Python 2.7的Twisted-15.4.0 。Twisted社区正在开发基于Python 3的版本,但目前为止尚没有基于Python 3的Twisted稳定发行版 。
Twisted是一个高性能的编程框架 。在不同的操作系统平台上,Twisted利用不同的底层技术实现了高效能通信 。在windows中,Twisted的实现基于I/O完成端口(IOCP,Input/Output Completion Port)技术,它保证了底层高效地将I/O事件通知给框架及应用程序;在linux中,Twisted的实现基于epoll技术,epoll是Linux下多路复用I/O接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率 。
在开发方法上,Twisted引导程序员使用异步编程模型 。Twisted提供了丰富的Defer、Threading等特性来支持异步编程 。
欲进一步了解Python四大主流网络编程框架的编程方法、项目实战,可参见《Python高效开发实战——Django、Tornado、Flask、Twisted》一书 。
--END--
往日热文:
8 个 Python 高效数据分析的技巧
如何使用 Python 操作 Git 代码?GitPython 入门介绍
Python 小技巧 —— 用类写装饰器
哪种Python IDE最适合你?这里有一份优缺点列表
你写的 Python 代码可以更“瘦”
喜欢本文的朋友们,欢迎长按下图关注订阅号码农真经
收看更多精彩内
你在看吗?一起成长
【Python 四大主流 Web 编程框架】
推荐阅读
- 如何让 Python 处理速度翻倍?内含代码
- Docker 安装 Nginx、PHP、MySQL、Tomcat、Python、Redis、Apache
- Python中with语句是干什么用的?
- 中国有几大无人区 中国的四大无人区是什么地方
- 藏族四大神山 藏族信仰的神
- 四大奇洞之谜 中国十大奇洞
- 东北四大神兽是什么动物 东北的八大神兽是什么
- 如何用 Python 实现 TCP 的连接与通信?
- 信阳市地税局,四大服务给力茶业加速发展
- 如何使用 Flask 编写 Python Web API