python测试相关库学习

今天花了一些时间,过了一下这几年自己用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 HTMLXML文件中提取数据的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第三库

  1. 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)提高服务吞吐量。

 

 

posted @ 2019-06-05 14:13  高级点工  阅读(343)  评论(0编辑  收藏  举报