废话
最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末
问题
整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中使用了101ms,考虑和频繁读写用例数据导致
环境与依赖
名称
版本
作用
python
3.7.8
pytest
6.0.1
底层单元测试框架,用来实现参数化,自动执行用例
allure-pytest
2.8.17
allure与pytest的插件可以生成allure的测试报告
jsonpath
0.82
用来进行响应断言操作
loguru
0.54
记录日志
PyYAML
5.3.1
读取yml/yaml格式的配置文件
Allure
2.13.5
要生成allure测试报告必须要在本机安装allure并配置环境变量
xlrd
1.2.0
用来读取excel中用例数据
xlutils
2.0.0
用来向excel中写入实际的响应结果
yagmail
0.11.224
测试完成后发送邮件
requests
2.24.0
发送请求
目录结构
执行顺序
运行test_api.py -> 读取config.yaml(tools.read_config.py) -> 读取excel用例文件(tools.read_data.py) -> test_api.py实现参数化 -> 处理是否依赖数据 ->base_requests.py发送请求 -> test_api.py断言 -> read_data.py回写实际响应到用例文件中(方便根据依赖提取对应的数据)
config.ymal展示
server:
# 服务器host地址,发送请求的url= host+ path
test: http://127.0.0.1:8888/api/private/v1/
dev: http://47.115.124.102:8888/api/private/v1/
response_reg:
# 提取token的表达式
token: $.data.token
# 提取实际响应中的某部分来作为断言数据(实例中断言的是meta这个子字典,预期结果也是写的meta子字典中的内容)
response: $.meta
file_path:
# 测试用例数据地址
case_data: ../data/case_data.xlsx
# 运行测试存储的结果路径
report_data: ../report/data/
# 本地测试报告生成位置
report_generate: ../report/html/
# 压缩本地测试报告后的路径
report_zip: ../report/html/apiAutoTestReport.zip
# 日志文件地址
log_path: ../log/运行日志{time}.log
email:
user: 发件人邮箱
password: 邮箱授权码(不是密码)
host: smtp.163.com
contents: 解压apiAutoReport.zip(接口测试报告)后,请使用已安装Live Server 插件的VsCode,打开解压目录下的index.html查看报告
# 发件人列表
addressees: ["123@qq.com","12067@qq.com","717@qq.com"]
title: 接口自动化测试报告(见附件)
# 测试报告附件
enclosures: ["../report/html/apiAutoTestReport.zip",]
EXcel用例展示
脚本一览
#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
"""</