90%测试人不知道的快速入门秘籍——接口自动化神器 apin(一)

news2025/1/22 22:48:36

一、apin 介绍及安装

1、什么是 apin

apin是柠檬班——木森老师开发的一个无需写代码、就可以进行接口自动化测试的框架。

只需要通过json或yaml文件编写非常简洁的用例数据,即可完成接口自动化测试,并生成自动化测试报告。

apin旨在帮助更多不会写代码的小伙伴掌握接口自动化测试的能力。框架使用起来非常简单,易上手,只需要几个小时就能大体掌握!

目前发布的是第一个版本后续会持续优化,丰富新的功能。

2、安装 apin

apin 是基于 python3.6 开发的,安装前请确认你的 python 版本 >3.6。

  • 安装命令

pip install apin

 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

二、快速入门

1、项目创建 

  • 创建命令

 apin create 项目名

安装好 apin 之后,打开命令终端输入创建命令,即可在当前路径下创建项目。

cd 切换到项目之中,即可看到如下的项目结构:

图片

  • 项目文件说明

casedata: 存放 YAML 和 JSON 格式编写的用例文件

testcases:py:存放 py 编写的用例目录

func_tools.py:自定义的函数工具文件

setting.py:整个项目的全局配置文件

run.py:项目运行入口文件

2、用例编写 

apin 用例编写支持 YAML 文件,JSON 文件,py 文件三种方式,下面通过一个接口的用例 demo 来快速了解一下。

  • 接口demo

接口地址:http://httpbin.org/post

请求方法:post

请求参数类型:application/json

请求参数:

参数名类型说明
userstr账号
pwdstr密码
  • JSON 编写用例

在项目的 casedata 目录下,定义一个以 test 开头的 JSON 文件,按照【apin 用例编写规范-json】编写用例即可。

案例:

 {
  "host": "http://api.XXX.com/futureloan/",
  "Cases": [
    {
      "title": "普通用户注册",
      "interface": "member/register",
      "method": "post",
      "json":{"mobile_phone":"133010121224","pwd":"lemonban"},
      "verification": []

    }
  ]
}
  • YAML 编写用例

在项目的 casedata 目录下,定义一个以 test 开头的 YAML 文件,按照【apin 用例编写规范-yaml】编写用例即可。

案例:

# 域名
host: http://api.XXX.com/futureloan/
# 用例数据
Cases:
  - title: 普通用户注册
    interface: member/register
    method: post
    json:
      mobile_phone: ${{user_mobile}}
      pwd: lemonban
  • py 文件编写用例

在testcases目录中定义一个以test开头的py文件,定义一个以Test开头的类,并且继承于apin.core.httptest.HttpCase类,按照【apin用例编写规范-py】编写用例即可。

案例:

from apin.core.httptest import HttpCase

class TestStreamV3(HttpCase):
    host = "http://api.XXX.com/futureloan/"
    Cases = [
        # 用例1:普通用户注册
        {
            'title': "普通用户注册",
            'interface': "member/register",
            "method": "post",
            'json': {"mobile_phone": "${{user_mobile}}", "pwd": "lemonban"},
        },
    ]

3、用例运行

  • 方式1

终端项目路径下输入命令

apin run
  • 方式2

直接使用 python 运行项目的 run.py 文件

4测试报告和日志

  • 日志:项目运行完,会自动在项目路径下生成详细的运行日志

  • 测试报告:apin 的测试报告是基第三方库 unittestreport 生成的

运行完会在项目目录的 reports 目录中,自动生成详细的 HTML 测试报告。

 

关于 apin 的入门使用就介绍到这里啦,后续会更新 apin 使用的详细文档~ 

三、用例编写规范

1概念介绍

  • 用例集:

apin 中创建的每一个 test 开头的用例文件(py,json,yaml),被称之为一个用例集。一个用例集下面可以定义多条测试用例。

  • 测试用例: 

用例集中 Cases 字段中的一条数据就是一个测试用例。

2用例集的主要字段介绍

  • host:用例接口的 host 地址(接口的域名)

类型:字符串

例:

host = "http://api.lemonban.com/futureloan/"

  • headers:指定用例使用的请求头

类型:字典

例:

headers = {"User-Agent": "apin/musen"}

  • method:指定用例接口的请求方法

类型:字符串

例:post,get

  • interface:指定用例接口地址(接口 url 域名后面的部分)

类型:字符串

  • env: 设置用例集运行环境的局部变量

类型:字典

例:

 env = {
        "user_mobile": '13109099878',
        "pwd": 'lemonban'
    }

  • extract:指定用例请求完要提取的变量

  • verification:指定用例的断言

  • Cases:设置该测试集下的用例

3用例字段介绍

主要字段

  • 用例集中除 env 字段之外的字段

①用例集中除 env 和 Cases 字段之外,上述用例集中的字段,均支持在用例中自定义。
②如果用例中定义了用例集中的字段,就使用自己定义的,没定义则引用 用例集中的。

  • title:用例的描述字段)

测试报告和日志信息中用例的描述

  • json: 用来传递 JSON 类型的请求参数

请求参数类型为:content-type:application/json,使用该字段来传递请求参数

  • data:用来传递表单类型的请求参数

请求参数类型为:content-type: application/x-www-form-urlencoded,使用该字段来传递请求参数

  • params: 用来查询字符串参数

请求参数,以?key=value 的形式 拼接在 url 后面的参数

其他字段

除了上述主要字段之外,python 中的 requests 库中的 requests.request 方法所有的请求参数,均支持在用例中定义字段。
这些字段在大多数情况下都用不到。

  • files:接口用于文件上传

请求参数类型为:content-type:application/from-data,使用该字段来传递请求参数,常用于文件上传

  • cookies:

请求的 cookie 信息(apin 中同一个用例集会自动化传递 cookie,一般情况下,不需要使用该字段来传递 cookie)

  • auth: 用于 Basic/Digest/Custom HTTP 认证

  • timeout:设置 http 请求超时时间

  • allow_redirects:是否运行请求重定向

  • proxies:代理请求的

  • stream:是否立即下载响应内容

  • verify:是否进行证书校验(如果要忽略 HTTPS 请求的证书校验,则将此参数设置为 False)

  • cert:指定校验证书的路径

4、用例编写 

python 编写用

  • 步骤一,在 testcases 目录中定义一个以 test 开头的 py 文件

  • 步骤二,在文件中定义一个以 Test 开头的类,并且继承于 apin.core.httptest.HttpCase 类

  • 步骤三、在类中,编写测试集的字段值

字段名 = 字段值

 from apin.core.httptest import HttpCase
class TestDomeV3(HttpCase):
    host = "http://api.lemonban.com/futureloan/"
    headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
    # 定义测试前置方法
    setup_hook = {"timestamp": 'F{get_timestamp()}'}
    # 预设变量
    env = {
        "user_mobile": 'F{rand_phone("155")}',
        "admin_mobile": 'F{rand_phone("133")}'
    }
    # 结果校验
    verification = [
        ["eq", 0, 'V{{$..code}}'],
        ["eq", "OK", "V{{$..msg}}"]
    ]
  • 步骤四、在 Cases 字段中编写用例数据

from apin.core.httptest import HttpCase
class TestDomeV3(HttpCase):
    host = "http://api.XXXX.com/futureloan/"
    headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
    # 定义测试前置方法
    setup_hook = {"timestamp": 'F{get_timestamp()}'}
    # 预设变量
    env = {
        "user_mobile": 'F{rand_phone("155")}',
        "admin_mobile": 'F{rand_phone("133")}'
    }
    # 结果校验
     verification = [
        ["eq", 200, 'status_code'],
        ["eq", {'code': 0, "msg": "OK"}, {'code': 'V{{$..code}}', "msg": "V{{$..msg}}"}]
    ]
     Cases = [
        # 用例1:普通用户注册
        {
            'title': "普通用户注册",
            'interface': "member/register",
            "method": "post",
            'json': {"mobile_phone": "${{user_mobile}}", "pwd": "lemonban"},

        },
        # 用例2:管理员注册
        {
            'title': "管理员注册",
            'interface': "member/register",
            "method": "post",
            'json': {"mobile_phone": "${{admin_mobile}}", "pwd": "lemonban", "type": 0}
        },
   ]

YAML 编写用例

使用yaml编写用例前 建议先去学习一下yaml的语法。

  • 步骤一:在 casedata 中定义一个 test 开头的 YAML 文件

  • 步骤二:在 YAML 文件中定义测试集的字段值

# 域名
host: http://api.xxxxx.com/futureloan/
# 请求头
headers:
  X-Lemonban-Media-Type: lemonban.v2
# 用例前置钩子函数
setup_hook:
  timestamp: F{get_timestamp()}
# 预设运行变量
env:
  user_mobile: F{rand_phone("155")}
  admin_mobile: F{rand_phone("133")}
# 结果校验字段
verification:
  - ["eq", 0, 'V{{$..code}}']
  - ["eq", "OK", "V{{$..msg}}"]
  • 步骤三:在 Cases 字段中编写测试用例

# 用例数据
Cases:
  - title: 普通用户注册
    interface: member/register
    method: post
    json:
      mobile_phone: ${{user_mobile}}
      pwd: lemonban
  - title: 管理员注册
    interface: member/register
    method: post
    json:
      mobile_phone: ${{admin_mobile}}
      pwd: lemonban
      type: 0

JSON 编写用例

使用 YAML 编写用例前 建议先去学习一下 JSON 的语法,JSON 文件中字段名都需要使用双引号。

  • 步骤一:在 casedata 中定义一个 test 开头的 JSON 文件

  • 步骤二:在 JSON 文件中定义测试集的字段值

  • 步骤三:在 JSON 文件中定义测试集的字段值

{
  "host": "http://api.XXXXX.com/futureloan/",
  "headers": {"X-Lemonban-Media-Type": "lemonban.v2"},
  "setup_hook": {"timestamp": "F{get_timestamp()}"},
  "env": {
    "user_mobile": "F{rand_phone('155')}",
    "admin_mobile": "F{rand_phone('133')}"
  },
  "verification": [
    ["eq", {"code": 0, "msg": "OK"}, {"code": "V{{$..code}}", "msg": "V{{$..msg}}"}]
  ],
  "Cases": [
    {
      "title": "普通用户注册",
      "interface": "member/register",
      "method": "post",
      "json": {
        "mobile_phone": "${{user_mobile}}",
        "pwd": "lemonban"
      }
    },
    {
      "title": "管理员注册",
      "interface": "member/register",
      "method": "post",
      "json": {
        "mobile_phone": "${{admin_mobile}}",
        "pwd": "lemonban",
        "type": 0
      }
    }
  ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IPIDEA代理-如何解决使用代理IP后网速变慢的问题

代理IP是一种常见的网络技术手段,它可以被广泛应用于数据采集与分析、网络营销、舆情监测、SEO等诸多场景,帮助用户获取更多的网络资源,提高采集效率。但是,使用代理IP也会带来一些问题,其中最常见的就是网速变慢。在本…

IDEA(2023)修改默认缓存目录

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:无 &#x1f33c…

Redis-渐进式遍历scan的使用

目录 1、为什么使用渐进式遍历? 2、scan的使用 3、渐进式遍历的缺点 4、补充知识点:redis中也区分database 1、为什么使用渐进式遍历? 前面的博客中,我们有提到使用keys *来获取所有的key,但这种办法,…

MySQL最新版8.1.0安装配置教程

目录 目录 前言 安装流程图 1,MySQL数据库是什么? 2,下载zip压缩包 3,解压到要安装的目录 4,添加环境变量 4.1,找到环境变量 4.2,进行环境变量的添加 5.新建mysql 配置文件 6、安装mysql服务 7、初始化数据文件 8、启动mysql …

Java学习day01:数据类型、运算符、分支结构

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!) Java学习:数据类型、运算符、分…

手把手教你搭建会员运营体系

越来越多商家开始重视会员运营、今日就从以下加点展开聊聊: ①搭建会员体系的原因 ②会员运营的作用 ③会员标签 ④会员模型 ⑤成长体系 ⑥搭建会员运营体系的方法

C# OpenVino Yolov8 Pose 姿态识别

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenVino_Yolov8_Demo {public…

一起解读,从凌乱到智能,两种仓库物流管理的区别

百世慧与达索系统合作,为海量客户提供数字化转型。我们主要围绕仿真驱动创新和数字化精益两个板块进行实施。 在数字化精益板块中,产品全生命周期管理PLM、制造运营系统MOM这两个产品实施过的大型客户有宁德新能源、诺德股份、天津大众、中海寰宇等企业…

React使用useImperativeHandle实现父组件触发子组件事件

相关知识: useImperativeHandle forwardRef 相关代码: 获取子组件实例,由于这是函数组件,没有this因此不能整体获取,我们可以通过useImperativeHandle获取想要的变量或者方法。 父组件import React, { useRef } fro…

华为“通卫星”,苹果“好奇心”,终端之争供应商受益

9月13日凌晨,苹果新品发布会如期举行,苹果正式发布了包括iPhone 15、15 Plus、15 Pro、15 Pro Max四款机型。 值得一提的是,这场科技界的“春晚”,不再是苹果的独角戏,会后的报道里,彭博社、华尔街日报等一…

Vmware Workstation安装说明

目录 一、下载二、安装 一、下载 下载地址:https://www.vmware.com/cn/products/workstation-pro.html 二、安装 双击下载下来的安装包,按提示一步步操作: 点击【许可证】输入许可证密钥,确认后点击【完成】完成安装。…

常用API(基础)

1.API 1.1 API概述-帮助文档的使用 什么是API ​ API (Application Programming Interface) :应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的&a…

数据结构Map-Set和哈希表

目录 概念 模型 Map Map的常用方法 对于Map的总结 Set Set的常见方法 关于Set的总结 哈希表 概念 冲突 概念 哈希函数设计原则 常见的哈希函数 1.直接定制法(常用) 2.除留余数法(常用) 3.平方取中法 4.折叠法 5.随机数法 6.数学分析法 冲突避免-负载因子调…

【数据库】数据库系统概论(二)— 关系

关系数据库 关系数据库是支持关系模型的数据库系统。 关系模型的数据结构:关系;逻辑结构:扁平的二维表 域 是一组具有相同数据类型的值的集合。 例如:{a,b,c}、{0,1,2,3}等等 笛卡尔积 定义 笛卡尔积是域上的一种集合运算…

抓准时机,成为亚马逊,速卖通,国际站的领军者

下半年即将接踵而至的万圣节、黑色星期五、圣诞节等大型节日,不仅仅是海外消费者的重要消费节假日,也是中国出海企业势在必得的流量战场。 那么对于下半年重头戏,卖家该如何把握好黄金时机,赢得一年大丰收 旺季卖家怎么掠夺竞争…

安达发|APS自动排产软件帮助制造业实现“降本增效”

随着科技的不断发展,制造业在生产过程中所面临的问题也在不断地改变和升级。如今,制造业所面临的生产问题主要包括以下几个方面: 1. 生产效率低下 在传统的制造业中,生产过程往往依赖于人工操作,这导致了生产效率低下的…

紫光展锐5G芯T820 解锁全新应用场景,让机器人更智能

数字经济的持续发展正推动机器人产业成为风口赛道。工信部数据显示,2023年上半年,我国工业机器人产量达22.2万套,同比增长5.4%;服务机器人产量为353万套,同比增长9.6%。 作为国内商用服务机器人领先企业,云…

PMP含金量再升级!北京上海等地可评职称!

最近PMP证书又“升级”了,不过不是证书上的改变,而是含金量在原有基础上又上升了一个档次。 9月4日,北京市人力资源和社会保障局联合北京市人才工作局发布关于印发《北京市境外职业资格认可目录(3.0版)》的通知,PMP项目管理证书也…

实时时钟和日历电路芯片MS85163/MS85163M

MS85163/MS85163M 是一款 CMOS 实时时钟 (RTC) 和 日历电路,针对低功耗进行了优化,内置了可编程的时钟输出、中断输出和低电压检测器。所有寄存器地址和数据都通过两线双向I 2 C 总线进行串行传输,最大总线传输速度为 400kbit/s 。采用SOP8…

02目标检测-传统检测方法

目录 一、目标学习的检测方法变迁及对比 二、 基于传统手工特征的检测算法的定义 三、传统主要手工特征与算法 Haar特征与 人脸检测算法 - Viola-Jones(了解) HOG特征与 SVM 算法(了解)(行人检测、opencv实现) SIFT特征与SIFT算法(了解) DPM&#…