搭建接口自动化测试框架的思路分析和技术点

背景

为什么要做自动化测试?

节省测试时间,项目有一定体量后回归测试等场景需要耗费大量时间和人力

为什么要做接口自动化测试?

相对于ui,接口较稳定,实现自动化比较方便,代码成型后,用例和代码维护也比较方便

一、拆解接口测试的过程和场景

1.分析接口请求有哪些内容

  • l 请求方法 method
  • l 请求地址url
  • l 环境配置 ip
  • l 前置操作
  • l Request Body (数据类型)
  • l 状态码
  • l Response body
  • l 断言
  • l 后置操作

2. 两种接口测试场景

  1. 对单个接口进行校验

接口字段的数据类型/长度/空值等检查点做校验,此场景大量不同数据请求同一个接口,适合做数据驱动(DDT),此场景主要解决批量读取用例数据,加载DDT,记录执行结果(使用异常处理)三个问题。

  1. 对接口进行业务流的测试

此场景会涉及多个接口及数据的插入及清洗等

1分析业务关系

可从流程图,4+1视图,设计文档等入手

2梳理

例:启动指标

启动指标的条件,该指标应存在(delete_flag=0)且指标状态为inactive

为确保用例的独立性(解耦),测试流程应为:

1新建指标并返回指标id

2请求指标启动接口,启动新建的指标;断言接口返回success/数据库内指标状态刷新为active;由于指标启动过程平台建任务有耗时,此处需要设置等待。

3数据的清理,请求指标停止接口停止该指标任务,删除此指标相关数据(指标表/指标表达式表)

二、分析接口自动化测试活动

1.接口拉通--编写用例的准备

接口文档

Postman(灵活运用postman生成代码的功能)

参照文档使用postman请求,拉通接口

2.测试过程相关数据的管理和组织

1.用例编写

用例数据 用例编号,用例名,url,method,入参,预期结果

2.用例文件的格式,组织方式 excel / python文件/yaml

1使用excel表格编写用例,注意用例表字段的设计

优点:维护简单,修改方便,不需要会编程

缺点:程序需要使用相关模块(openpyxl/xlrd等)支持才可以读取,需要编写相关代码

例:

 适用于单接口校验做数据驱动

适用于业务场景测试,配合正则表达式和反射

2使用python文件编写用例

使用面向对象和继承的方法编写用例数据

优点:python可直接读取,不需要中间层,可直接在开发环境编写

缺点:编写人员需要会python语法,理解面向对象和继承等,跨语言较麻烦

class Case:
    #此处可使用类属性放置所有用例实例共有的属性,如IP,但是IP这种环境配置还是建议放在config里,不然用例改环境太麻烦
    host_ip=""
    def __init__(self,num,name,url,method,req_body,exp_result):
        self.num=""
        self.name=""
        self.url=""
        self.method=""
        self.req_body=""
        self.exp_result=""
#将用例属性进行实例化传入,因为整个框架设计数据传递主要使用json,所以建议所有字符串都用双引号
#实例化用例后导入到其他模块使用就可以了
case_01=Case("01","case_01","/abc","post","{"user":"001"}","{"status":"success"}")
#多个用例时,可使用list传递,适用DDT
case_02=Case("01","case_01","/abc","post","{"user":"001"}","{"status":"success"}")
case_03=Case("01","case_01","/abc","post","{"user":"001"}","{"status":"success"}")
case_box=[case_01,case_02,case_03]
#当然,也可以写个循环生成用例,case_box.append()循环往里加

class New_case(Case):

    def __init__(self,num,name,url,method,req_body,exp_result,exp_code):      super().__init__(num,name,url,method,req_body,exp_result)      self.exp_code = exp_code
#使用继承可以方便添加新的用例属性

3使用yaml文件编写用例

优点:跨语言优势强

缺点:编写人员需要会yaml语法,需要使用第三方模块支持才能读取数据

# yaml语法
# key: {key1: value1,key2: value2} 注意:冒号后有空格,字符串建议使用双引号
case_data_workbook:
  workbook: "../data_of_cases/case2.xlsx"
  worksheet: "Sheet1"

# 用例编写
case_01:
  num: "01"
  name: "case_01"
  url: "/abc/o1"
  req_body : '{"credentials": "123456","account":"admin"}'

3.环境配置config

1使用python类编写配置文件

优缺点同上,我们直接看例子

"""
建立一个类
配置项用类属性来写,方便其他模块导入使用
路径可以使用pathlib拼接

"""


class CONFIG:  #环境host
    HOST = "http://www.xxx.com:8108"  #用例excel文件
    WORKBOOK = "../data_of_cases/case2.xlsx"  #用例sheet
    WORKSHEET 
  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值