Python+Pytest+Allure+Yaml接口自动化测试框架详解
编撰人:CesareCheung
更新时间:2024.06.20
一、技术栈
Python+Pytest+Allure+Yaml+Jenkins+GitLab
版本要求:Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0
二、环境配置
- 安装python3.7,并配置Pycharm运行环境为python3.7
- 安装allure并配置好环境变量
- 安装依赖包 pip install -r requirements.txt
三、自动化思路
通过请求方法封装及环境配置,用pytest框架运行读取testcase文件测试用例集,将参数传入对应test_*用例执行器汇总并执行输出allure测试报告
1)单个用例
2)多个用例
3)多用例上下游接口串联传参
4)用例执行(场景跑批)
5)测试报告
6)通知(邮件、企业微信)
四、项目结构:
框架目录详解
–common:公共方法包
--connect_db.py: SQL操作封装
--get_path.py:获取文件路径方法
--logger_util.py:输出日志方法
--parameters_until.py:传参方式方法封装
--requests_util.py:请求方式方法封装
--yaml_util.py:yaml文件读取写入方法
–config: 配置包
--config.yml:配置文件,主要为域名ip地址配置及日志输出级别
--extract.yml:接口上下游串联时,用例文件做参数化截取返回值后自动输出保存到该文件
–data: 用于存放csv传参文件包(可用可不用,具体根据实际情况)
--get_token.csv:存放csv文件参数
–logs: 日志输出文件,会自动生成
–reports: 测试报告文件
–testcase: 测试用例文件集
- fenmi:项目测试用例参数
--login.yml:接口参数传参
# 如:
- name: 1、获取UUID
# base_url: https://XXXXX.com
base_url: ${get_base_url(base_fenmi_url)}
request:
method: get
url: /fenmi/code
headers:
Authorization: '{
{access_token}}'
params:
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
extract:
uuid: '"uuid":"(.*?)"'
validate:
- equals: {
code: 200}
- equals: {
msg: "操作成功"}
# 解释:
name:为接口名称
base_url:读取config.yml文件的域名IP
request:请求参数
method:请求方式
url:接口地址
headers:请求头,比如token,'{
{access_token}}'为取上游接口返回值做变量进行参数化,做参数化为固定写法'{
{变量名}}'
params: 请求参数,具体需要看接口请求传参方式
extr