前段时间系统学习了测试专家虫师的《Web接口开发与自动化测试--基于Python语言》,自己也模仿完成了项目,收获颇丰。由于服务端没有错误日志输出,在定位错误、接口调试过程中,postman和fiddler起到了很大的作用。过去单独学习这两个工具,并没有感觉到它们的强大,果然,在项目实战中学习更有效率!
在已有项目的基础上,又对所有接口进行了优化,增加了10个接口:实现了http basic认证版本的接口和md5摘要认证版本的接口。另外,实现了自动发送测试报告邮件的功能。
接口测试还有一些常见的场景,例如获取cookie自动登录,对https接口处理,使用mock模拟等,这次项目暂时没有涉及到,未来完善。
回顾如下:
github地址:https://github.com/yulifromchina/InterfaceTest
一、项目成果展示
二、项目所用技术
开发平台:windows 10 x64 + pycharm + python3.6 + mysql 5.7.21
签到系统:django 2.0.1 + django-bootstrap3-9.1.0
测试框架:requests 2.18.4
三、项目具体介绍
1、发布会签到系统
发布会签到系统的功能包括:登录、发布会管理、嘉宾管理、签到功能
大致逻辑为:用户登录时向服务器发起Post请求,通过django的auth模块进行验证,并把用户信息存储在服务器session中。在登录的情况下,用户可以浏览发布会,嘉宾列表,以及进入发布会管理页面后签到。如果没有登录,则无法访问这些页面(通过django的login_required装饰器实现)。用户输入手机号签到,后台将手机号和发布会作为联合主键到后台数据库验证,并进行是否已签到、发布会是否已经结束等判断,最后返回签到结果。
以上逻辑均通过不同的路由以及回调函数进行响应,回调函数将数据从数据库取出,经模板渲染后返回给浏览器显示。
提供的接口如下:
2、测试框架
测试框架的结构如下:
对接口进行请求,使用了requests库;
case的组织,使用了unittest测试框架;
测试报告,使用了HTMLTestRunner生成;
测试数据,使用了MySQL数据库存储;
邮件发送,使用了smtplib和email库。
每个接口包括若干个用例,每个接口的测试由一个py文件负责:
四、项目总结
接口测试有一些专业的平台提供服务,例如三剑客接口测试平台,是使用现场的平台还是自己开发测试框架,或者二次开发,取决于项目的具体情况,没有绝对的好坏。通过实际完成接口,并对接口进行编写,加深了认识,相信能够更好的使用工具。使用django开发项目,快速且结构清晰。
项目中存在一个bug没有解决。在run_test.py中,目前不能raw_*.py, http_*.py,md5_*.py三个版本的15个用例一起运行,只能分三批运行。因为这三个批次的接口,往数据库中插入的是同一批数据,因此一起运行会造成数据污染。尝试在三次运行间进行了清空数据库再重新插入数据的操作,但是这个插入操作会失败。没有定位到原因。如果有大牛解决过类似情况,望指教!多谢!