2.1.0 • Published 4 years ago

api-yaml v2.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

文档驱动接口测试用例

作者 联系QQ: 513678090

前言

yaml+function

以文档描述测试,用工具执行文档。

以扩展自定义函数(包括异步函数)方式解决文档无法处理复杂逻辑的问题

支持自定义插件开发

支持快速添加自定义函数,通常项目无需去开发插件,增加开发成本

使用

# 安装 npm install api-yaml -g # cd到自定义文件夹 然后创建test项目 api-yaml --init # 运行 注意目前配置文件不支持其他路径形式 api-yaml config.yaml

API-TEST 核心配置

process: 1 #启动进程数量 每个进程数据独立不共享
mode: TEST
modules:
- test  # 引用的接口文档 从上至下顺序执行 如 ./v1/test1.yaml  => v1/test1
clients:
  - service: http #使用得扩展驱动
    name: http1   #别名 可以指定接口调用某client 第一个client为默认
    options: # http 模块基本设置
      baseURL: http://127.0.0.1:8080  
      timeout: 1000
      headers: {}
      autoCookie: true  #自动保存cookie 并发送cookie
results: # 对请求结果的处理扩展库
  - service: TEST # 控制台展示
    options:
      file: false  # 文件输出到根目录 test.$PID.log 会输出请求返回结果数据
      log_err_res: false # 当接口错误时 是否打印返回信息 默认不打印
defines:   # 定义宏  可以在接口配置中继承
  header: # <-- 定义宏
    req:
      headers:
        token: $project.token     # 使用project对象的数据 可以在 init 扩展中赋值 也可以在下面 project 中赋值
        name: $$project.user.name  # $表示获取进程全局对象 $$表示获取当前流程的对象
extends: default # 扩展文件夹 可以修改成路径 ./extends 
project:    #可以给project对象设置默认值
  token: asdfwioen
  user:
    name: 123  

API-PIT 核心配置(继承API-TEST配置)

process: 1 #启动进程数量 每个进程数据独立不共享  但结果会进行综合统计
mode: PIT # 开启压测模式
PIT:
  threads: # 线程列表 每个线程同步执行
    - request: test1 #需要进行并发请求的名称
      overtime: -1 #终止请求时间 -1表示不终止
      count: 100 #请求的总次数 -1表示无限 (count 或 overtime)
      interval: 10 #每次间隔 毫秒 
      concurrency: 10 #m每次并发数
      threads: [] #进程数组 无限套娃
clients:
  - service: http-request #使用得扩展驱动
    name: http1   #别名 可以指定接口调用某client 第一个client为默认
    options: # http 模块基本设置
      baseUrl: http://127.0.0.1:8080  
      timeout: 1000
      headers: {}
results: # 对请求结果的处理扩展库
  - service: PIT # 控制台展示
    options:
      file: false # 文件输出到根目录 PIT.$PID.log 会输出请求返回结果数据

接口配置

  • req 的配置是根据扩展库所需参数
  • res 的配置是固定格式 value 可以根据扩展库不同
- describe: 请求1 # 请求描述
  name: req1  # 请求名 这里被赋予了名字才能被变量获取
  client: http1 #使用的client 名称 缺省值为第一个client
  includes: 
  - header  # 引用核心配置中的宏定义 将会继承其属性
  req:
    url: /test/index
    method: get
    headers: 
      token: ^test1.body.token  # ^表示获取 API {test1} 的response 如果该api还未请求则会先进行请求
      token: $$apis.test1.response.body.token # 该方式不会预执行请求 如果该api还未请求 则会报错
      code: @eval 1234123     # 调用函数
    params:  #get请求使用
      name: hh  
    # data:    #post请求使用
    #   name: hh
  res:  # status headers body
    status: 200
    body: 
      code: 0000
      ?name: jlt  # 参数前带 ? 表示非必存在
      age: @mumber 1 hah # @表示调用 mumber 函数 后面则是跟的参数

扩展文件

  • init 进行一些初始化 设置常量等等
  • convert 定义req 参数转换函数
  • valid 定义res 参数验证函数

Client扩展

  • http

    使用的是 axios 库请求 参考axios请求配置 适合接口测试

  • http-request

    使用的是 request 库请求 参考request请求配置 适合压力测试

常用请求参数转换函数

@eval 1+2  # 调用js代码返回结果
@getCookies # 获取cookie的值 s1=123;s2=345;

常用结果验证函数

@boolean
@number
@int
@float
@string
@object
@array

@regexp /^(\+(\d){2})?1\d{10}$/ # 正则验证

常用全局变量

# 用于自定义常量设置
$project

常用流程变量

# 所有请求的数据 可以直接访问到有名字的接口返回结果
# $$apis.name.response  响应数据 {status,headers,body,time}
$$apis
2.1.0

4 years ago

2.0.0

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.0

5 years ago

1.2.1

5 years ago

1.1.0

5 years ago