接口自动化全篇
整体思路
1、连接mysql数据库、封装数据库方法
2、封装requests方法
3、使用unittest框架编写接口测试用例
- 调用封装的数据库方法取数据库数据
- 数据传入requests封装方法中
- 断言:响应数据是否和存在数据库中的断言字段一致,判断用例是否通过依据
4、执行用例
5、HtmlTestRunner_PY模块生成测试报告
6、准备数据(接口自动化前)、清理数据(接口自动化后)
文件目录
- commnon文件夹:公共使用的类
- base_api.py:连接数据库,读取数据库表数据
- readConfig.py:读写configfile.ini文件配置信息
注意:读写操作时需分开进行,不能用同一个实例,否则会重复写入之前配置文件中存在的内容。
- requests_api.py:增加auto_request,更适用项目
- testcase.sql:数据库脚本,附带了点数据
- logs文件夹:存放日志系统和项目日志
- logsfile.py:配置日志存放目录和日志相关信息
- report文件夹:测试报告放置在这里
- template文件夹:存放用例中用到的文件或图片
- HtmlTestRunner_PY文件夹:放置测试报告类
- testcase文件夹:测试用例文件存放
- configfile.ini:项目相关配置文件
- run.py:程序运行主文件,运行main函数
数据库表结构
case_id | case_num | title | url | method | body | headers | assert | status | token |
---|---|---|---|---|---|---|---|---|---|
测试用例ID | 测试用例编号 | 测试用例标题 | 接口资源地址 | 接口请求方法 | 接口参数 | 请求头 | 断言 | 接口状态码 | 存放cookies |
requests_api.py
@logger.catch()
:捕获运行中的异常写入error日志文件
auto_request()
:需要传入url、method、body,函数会根据method方法判断接口请求方式
注意:
url
根据配置文件主机地址加上资源路径,所以auto_request()
函数url只需传入资源路径
@logger.catch()
def auto_request(url, method, body=None, headers=None, files=None, allow_redirects=True, timeout=5):
all_url = str(url_head) + str(url)
global get_response
global post_response
try:
logger.info('开始请求接口:{all_url}', all_url=all_url)
if method == 'GET'