做接口自动化一定要会代码?无代码框架APin介绍(一)

一、apin 介绍及安装

1、什么是 apin

apin是一个无需写代码,就可以进行接口自动化测试的框架,只需要通过json或yaml文件编写非常简洁的用例数据,即可完成接口自动化测试,并生成自动化测试报告。apin旨在帮助更多不会写代码的小伙伴掌握接口自动化测试的能力。框架使用起来非常简单,易上手,只需要几个小时就能掌握!目前发布的是第一个版本后续会持续优化,丰富新的功能

2、安装 apin

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

  • 安装命令
 pip install apin
 

二、快速入门

1、项目创建

  • 创建命令
 apin create 项目名
 

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

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

 

  • 项目文件说明
    • casedata: 存放 YAML 和 JSON 格式编写的用例文件
    • testcases:py:存放 py 编写的用例目录
    • func_tools.py:自定义的函数工具文件
    • setting.py:整个项目的全局配置文件
    • run.py:项目运行入口文件

2、用例编写

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

1、接口 demo:

参数名类型说明

2、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": []

    }
  ]
}

 

3、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

 

4、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 使用的详细文档 

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

三、用例编写规范

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、用例字段介绍

1、主要字段:

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

  • title:用例的描述字段(必传字段)
    测试报告和日志信息中用例的描述
  • json: 用来传递 JSON 类型的请求参数
    请求参数类型为:content-type:application/json,使用该字段来传递请求参数
  • data:用来传递表单类型的请求参数
    请求参数类型为:content-type: application/x-www-form-urlencoded,使用该字段来传递请求参数
  • params: 用来查询字符串参数
    请求参数,以?key=value 的形式 拼接在 url 后面的参数

2、其他字段

除了上述主要字段之外,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、用例编写

1、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}
        },
   ]

 

3、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

4、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
      }
    }
  ]
}

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值