Python接口自动化框架

Python接口自动化框架

  • 概要说明
    • 背景
    • 功能
    • 目录结构
  • 快速上手
    • 操作步骤
    • 编写接口文档
    • 编写执行配置文件
    • 编写测试用例
  • 详细说明

版本 日期 作者 修改记录 备注
1.0 2022-09-30 arley

概要说明

背景

没有代码基础如何搞定接口自动化?框架提供可执行文件att.exe运行按自动化用例规则编写的yml文件格式用例即可输出测试报告。

功能

1. 自动化用例Yml格式编写
2. 测试用例中接口必要关键字段独立为接口文档
3. 按测试配置文件执行用例
4. 并发执行用例
5. 按标签筛选用例执行
6. 接口请求过程中数据替换、数据保存
7. 用例步骤切换登录账号
8. 失败用例重跑
9. 测试报告&日志输出
10. 用例变量隔离开关 
11. 自定义扩展函数:应用于随机数据的生成
12. 用例步骤强制等待&智能等待
13. 基于locust的性能压测
14. 用例支持数据库sql操作

目录结构

快速上手

操作步骤

1. 新建接口文档文件,例如: api_doc.yml
2. 编写接口文档文件
3. 新建测试目录,例如: test_case
4. 在测试目录下新建用例文件,例如: 登录用例.yml
5. 编写用例
6. 编写执行配置文件,例如: run_file.yml
7. 执行测试,例如: python run.py run_file.yml

编写接口文档

抽离测试用例中接口必要关键字段独立为接口文档;
避免接口改动而大批量修改用例;
文档记录整个项目中所需接口信息;
login: # 英文名称, 唯一/必填
 name: 登录接口 # 中文名称, 必填
 author: 研发 # 开发者名字, 非必填
 url: /login # 地址, 必填
 method: get # 请求方法, 必填, get/post/put/delete/等
 requstType: data # 接口请求数据格式, 必填, data/params/json/file
 headers: # 请求头, 非必填
  Content-Type: multipart/form-data;
 params: # 接口示例请求体, 非必填
 response: # 接口示例返回体, 非必填

编写执行配置文件

配置文件所有变量都会在执行用例开始时加载到环境变量池, 编写用例中可通过 $cache{host1} 调用
# 基础设置
# 默认位置,不可变更
# 必要字段,必填,全局变量共享和用例变量隔离开关
# y 或 n
var_suffix: y

# 默认位置,不可变更
# 必要字段,必填,区分是否性能测试y和普通测试n,默认n
# y 或 n
is_common_test: y

# 必要字段,必填,测试报告中体现
pro_name: 测试项目

# 必要字段,必填, 接口请求域名
#host: http://10.0.61.12:32005
host: https://127.0.0.1:81


# 必要字段,必填,用例所在路径目录
test_case: C:\Users\22220\Desktop\test_case

# 必要字段,必填,接口文档所在路径
api_doc: C:\Users\22220\Desktop\resource\api_doc.yml

# 必要字段,必填,资源目录所在路径
resource: C:\Users\22220\Desktop\resource


# 必要字段,必填,账号
account: # 默认字段,不可变更
  test1: # 账号别名,自定义
   user: admin # 默认字段,不可变更键名
   passwd: '123456' # 默认字段,不可变更键名
  test2:
   user: user12
   passwd: '123456'


# 必要字段,非必填,数据库信息
# type: pgsql,mysql,mssql,oracle
db: # 默认字段,不可更改
  pgsql1: # 数据库别名,自定义
    type: pgsql # 数据库类型
    database: test # 数据库名称
    user: postgres # 数据库登录用户
    password: S123 # 数据库用户密码
    host: 127.0.0.1 # 数据库地址
    port: 8832 # 端口
  pgsql2:
    type: pgsql
    database: jw
    user: jw_biz
    password: jw_biz
    host: 172.16.4.15
    port: 5432


# 必要字段,非必填,运行环境
env: 测试环境


# 必要字段,非必填,构建人
author:

# 必要字段,非必填,是否输出测试报告
# 可填: y 或者 n
# 示例: y ,代表生成报告
report: n


# 必要字段,非必填,并发执行
# 可填: auto 或者 数字
# 示例: auto ,auto代表自动适应执行机配置
thread:


# 必要字段,非必填,筛选用例执行
# 可填: OP[TAG] NOT[TAG]
# 示例: ORP0 NOTP1 ,代表执行用例标签含有P0不包含P1的用例,多标签以空格隔开
tag: ORP0


# 必要字段,非必填,失败重跑次数
# 可填: 数字
# 示例: 1 ,代表失败重跑1次
reruns:


# 自定义字段
deptId: 370
companyId: 370

编写测试用例

collect_addtool_02: # 用例ID, 唯一/必填
 name: 登录用例 # 用例标题, 必填
 tag: P0,登录 # 标签, 非必填
 author: 陈磊 # 编写人, 非必填
 step: # 用例步骤, 必填
 -
   name: 步骤一 # 步骤名称,必填
   action: login # 接口英文名称,必填
   account: test1 # 此步骤操作的用户
   domain: $cache{host1} # 步骤请求域名
   headers: # 请求头, 非必填
   params: # 请求体
    user:
    passwd:
   save: # 变量保存
    token: $.token # jsonpath取步骤返回内容
   assert: # 断言
   -
     jsonpath:  $.errorCode
     type: ==
     values: 1
     message:  # 断言失败提示信息
   sleep: 0 # 强制等待, 每个步骤结束后会等待2秒在执行后续步骤
   wait: 20 # 超时等待,在预期时间内断言失败会等待2秒,再次请求并断言 

collect_addtool_06: 
 name: 异常图片视频上传
 tag: P6
 author: 陈磊
 step:
 -
   name: 步骤一
   action: file_upload
   domain: $cache{host}
   account: test1
   headers:
    Authorization: Bearer cb8f5d1e96ae4d019acc866dd8b57ccb
    deptId: '1573497819780440065'
    adminUserId: ''
    tenantId: ''
   file:
   -
    field_name: file # 与后端确认文件接收字段名称,一般都是file
    file_path: test\test1.txt # 默认以resource目录为根节点
    file_type: text/plain # 文件类型
   -
    field_name: file
    file_path: test\test2.txt
    file_type: text/plain
   save:
    msg: $.msg
   assert:
   -
     jsonpath:  $.code
     type: ==
     value: '0'
     msg:  error code 应等于0
   -
     jsonpath:  $.msg
     type: ==
     value: 操作成功
     msg:  error code 应等于0
   sleep: 2
   wait: 10

collect_addtool_07: 
 name: 数据库查询操作
 tag: P7
 author: 陈磊
 step:
 -
   name: 步骤一
   db_name: pgsql1
   sql: select * from customer_company limit 2;
   save:
    company_name: $[5]
   assert:
   -
     jsonpath:  $[5]
     type: ==
     value: 
     msg:  $[5] 
   sleep: 2
   wait: 

Python接口自动化框架_第1张图片

详细说明

你可能感兴趣的:(接口自动化,python,自动化)