今天花了一些时间,过了一下这几年自己用Python开发的自动化测试框架,然后将其中常用到Python库抽出来,简单整理了一下它们的用处。我觉得,只要掌握了这些常用的Python库,足以应对大多数自动化测试框架和工具的开发工作。
为了从若干源代码文件中找出这些被引用的Python库,还专门写了一个小工具来查找它们,该工具已经上传到github,地址是:import_search.py
如果各位在平时工作中,发现了好用的Python库,也请留言注明,我好补充。
基本库:
sys 程序和Python解析器的交互
os 启动新进程;操作文件和目录
re 正则表达式,字符串匹配
string 基本字符串操作
inspect 提供自省和反射功能
importlib 支持动态导入
bitstring二进制数据处理
zipfile 压缩解压文件
tarfile 压缩解压文件
random 随机数,概率
uuid 生成唯一码
defaultdict 带默认值的字典
fcntl 操作文件描述符
signal 信号处理
threading 线程库,构建并发应用
psutil 系统性能参数
命令行,读取配置:
optparse 处理命令行选项
glob 文件路径查找
yaml 访问yaml数据文件
ConfigParser 读取配置文件
xml XML库
pickle 序列化
json 序列化
网络请求相关:
libxml2 XML解析器
urlparse URL解析
urllib 访问URL资源
urllib2 访问URL资源
cookielib http客户端的cookie处理
requests 神器,用于发送网络请求,常用于接口测试
httplib http请求客户端
BeautifulSoup 从HTML或XML文件中提取数据的Python库
网络数据包:
scapy 网络嗅探工具包
dpkt 网络数据报解析
pcapy 解析pcap文件
socket TCP,UDP数据协议
struct 将python基本类型值与用python字符串格式表示的C struct类型间的转化,主要用于网络数据传输
测试系统构建:
flask 构建web应用,构建HTTP接口
tornado 构建web应用,构建HTTP接口
BaseHTTPServer 简单HTTP服务器
appium App自动化测试工具
selenium 大名鼎鼎的web自动化测试工具
behave BDD自动化测试框(通用自动化测试框架)
unittest Python内置自动化测试框架(通用自动化测试框架)
logging 日志库
traceback 调试信息
nanotime 纳秒级的时间
time 时间访问和转换函数
datetime 日期和时间
jenkinsapi 访问jenkins
分布式系统构建:
xmlrpclib 基于xml的远程RPC库
fabric 利用ssh高效部署和管理系统的工具,用于远程执行命令和部署文件
paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。用于远程执行命令和部署文件
大数据和数据库相关:
avro avro是一个数据序列化系统
etcd etcd访问库
pyspark spark库
hdfs hdfs库
pyhive hive库
redis 访问redis数据库
rediscluster 访问redis集群
pymongo 访问mongodb
kafka 访问kafka
pykafka 访问kafka
sqlalchemy ORM库
MySQLdb 访问MySQL数据库
结果展示:
smtplib 负责发送邮件
email 负责构造邮件
numpy 数据处理
math 顾名思义
matplotlib 数据绘图包
pylab 绘制二维,三维数据
pychart 制作图表
你必须知道的10个Python第三库
- BeautifulSoup
Beautiful Soup是一个可以从HTML,XML进行提取文件的Python库,日常我们使用爬虫进行数据抓取回来之后,往往需要进行数据解析。
使用它能让你开心愉快提取里面的爬回来的数据。
2. Arrow
用过datetime标准库的同学都知道,这个库每次需要import各种时间模块格式化,非常不友好,arrow直接接受各种时间(datetime,date,timestamp)类型转化为Arrow类型,然后进行各种格式化操作,非常方便。很是人性化,简直是居家旅行必备良药
3. Requests
题图就是requests的logo,这个库使用量之大,Python开发者应该是无人不知无人不晓。
requests是日常网络库使用最频繁的一个,不管是用于正式还是测试,它完全满足与日常网络的需求,非常人性化,简单好用。
requests目前在github有36+的star,除了功能强大,源码也是写的非常赞。五星推荐
4. Fabric
对于少量服务器,日常自动化发布配置,与服务器交互只需要配置一个fabfile.py的自动化脚本就行,非常简单方便。如果需要更多配置运维可以使用ansible,这个后期我单独和大家讨论。
5. Statsd
作为一枚开发同学,服务器API性能,耗时监控是一个很重要的数据,我们需要收集起来进行实时分析。
statsd是一个网络守护进程,通过Python客户端,我们可以统计监听API数据发送到服务端,比如ES,influxdb,promethues,并且用Grafana进行数据展示。
6. Gevent
gevent是基于协程的Python网络库,通过gevent使的协程的使用变得非常简单,遇到阻塞你不需要显示切换,程序会进行自动调度。使用非常广泛,在部署flask,celery往往会加入gevent提高服务性能。
7. Supervisor
之前文章提到过supervisor可以大大方便我们进行进程管理,开始,重启,停止,查看日志等等。
8. Voluptuous
这个库估计很多同学不知道,主要是日常写API的时候进行数据校验,当前端API传递参数过多的时候,这个库,可以通过装饰器的方式提前进行校验数据逻辑,大大降低了你在代码逻辑校验数据的耦合,强烈推荐后端的同学使用。
9. Raven
单纯这个名字大家可能不那么敏感,但是sentry大家肯定就知道了。
这个库就是sentry服务的SDK包。对于日常邮件报警我们通过安装了这个包配合sentry后端服务,就能够进行各种邮件报警的错误收集。
另外通过设置日志等级,我们能轻松通过logger进行触发报警。
这个包适合多个语言,不仅仅是Python语言之下。
10. uWSGI
uWSGI这个是一个web服务器,它实现了WSGI协议、uwsgi、http等协议,我们在Python日常部署文章提到过,主要通过Nginx + uWSGI 拉动我们应用服务(比如Django)提高服务吞吐量。