一、为什么要做接口自动化
按照接口测试用例(设计方法可参考文章9)将接口功能测试通过后,当有新增接口或部分接口有变动时,原有未变动接口需要上线前整体测试时,如果再去手工测会比较耗时,这时如果把原本已测试好的接口,维护成python代码,每次上线前去跑一遍,就会节省很多测试时间,也不会说漏测某个接口,上线心里也更有普
二、自动化用例几大规则
1、写自动化测试用例之前必须要有接口功能测试用例;
2、用例之间不要有依赖关系;
3、每一条测试用例可以重复执行;
三、整体框架设计
1、PyCharm新建api项目
命名及路径最好不要有中文
2、新建cases包python package
此文件包是最核心的,专门存放测试用例,cases下维护不同模块的测试用例;如login包下面放登陆相关的测试用例脚本,register下面放注册相关测试用例;特别注意每个模块用例下都会有一个conftest.py文件,专门用来写该模块的前置后置操作fixture,每个模块都有自己的前置操作,这里会有一个作用域,就像pytest默认规则,用例文件默认匹配test_开头的py文件,用例也必须test_开头,用例传入前置参数后,会自动匹配conftest.py命名的文件(不得不说pytest的前置后置比unittest框架装饰器NB多了);然后cases下面的conftest.py作用于整个用例模块;common_function.py存放一些公共函数,如将登录写成一个函数放到这里,当某用例A需要登录作为前置条件时,在conftest.py里面写一个fixture调用登录函数,然后将此前置条件传到A用例;test_data.yml里面存放测试数据,做参数化及代码数据分离。
3、新建common包封装一些工具类或公共函数
如read_yaml.py脚本里面写了一个读取yml文件的函数,当我们用例需要读取yml文件传参时,可以导入调用这个函数读取数据,实现数据分离;connect_mysql.py里面封装了一个操作数据库的类,增删改查作为方法,其他fixture或者用例要用可以直接导入,实例化,调用方法;还可以封装如发送邮件的方法。
4、项目下的conftest.py
对整个项目作用,可以写一些hook函数,控制pytest的运行规则
5、项目下的pytest.ini
改变用例匹配规则;mark标记作用;存放base_url等
6、项目下的readme.md
项目描述,项目环境,依赖包说明,用例及测试报告说明等
6、项目下的requirements
dos窗口进入项目所在文件夹
自动生成依赖包:pip freeze > requirements.txt
自动安装依赖包:pip install -r requirements.txt
一般要在其他环境运行时需要此操作
四、后期框架优化
1、Allure报告
2、邮件发送
3、持续集成jenkins
4、代码管理
五、其他说明
本问只讲了整体框架的思路,每个模块的细节都需要自己去学习,例如如何封装公共方法,如何连接操作数据库,一些python基础,requests的session会话使用,参数化,用例和数据分离,前置后置操作,jenkins服务搭建持续集成等等;
ps:后续不断学习完善上面每个模块,有时间写写公共方法,放到github上,不断总结、积累