接口自动化测试框架

  • 接口自动化测试框架python+unittest/pytest+requests+ddt+openpyxl+pymysql+logging+unittestreport 
  • 框架设计思路
  1. 数据驱动
  2. 结构分层
  • 适用场景
  1. 提测冒烟测试
  2. 线上巡检回归测试
  3. 持续集成测试

接口自动化测试一般

业务逻辑层common

公用的方法封装与提取

  • 生成随机手机号封装,通过faker库造数据生成随机手机号
  • 数据库操作封装
  1. pymysql:用pymysql连接mysql数据库,执行sql语句,进行数据校验;
  • logger日志操作封装,提取日志内容,logger生成日志文件,统一日志输出格式、渠道、级别,执行结果的记录,便于定位问题;
  • excel测试数据操作封装
  1. openpyxl:使用openpyxl模块来操作excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据),打开workbook工作簿,获取sheet表单,获取表单中所有数据,直接调用测试用例;
  • Email发送邮件封装

 数据管理层data

用于存放测试数据,通过参数化读取csv数据;

pyyaml配置文件

测试用例层

  • unitest/pytest

python内置单元测试框架,运行测试用例

  • requests

requests模块主要用于发送http请求,提供不同的http请求方法;

requests.get(url, params, args)

在get请求中使用params参数,会自动把参数key、value拼接在url后;

requests.post(url, data, json, args)

data传递的是content-type:application/x-www-from-urlencoded,表单形式的数据

格式:a=1&b=2

json传递的是content-type:application/json,json格式的数据

格式:{“a”: 1, “b”: 2}

data只能传简单的只有键值对的dict或者是str格式

json一般只能传dict格式   

json.dumps(data)      序列化把字典格式的数据转换成str格式
json.loads(data)        反序列化把str格式转换成字典格式

  • ddt数据驱动

使用ddt数据驱动模块,分离测试数据和测试脚本,针对不同的参数组合驱动不同的测试场景,减少代码冗余;

  • 提供不同范围的setUp(前置条件)和tearDown(测试清理)方法
setUp(前置条件)

用于测试用例执行前的初始化工作

访问数据库(增删改查操作)、登陆浏览器

tearDown(后置清理)

用于测试用例执行后的清理工作

关闭数据库(增删改查操作)、关闭浏览器  

面试题-如何解析接口响应数据json格式

import json,json模块是python中用来解析json数据格式的模块

  • 序列化:dict转换json格式字符串 json.dumps(d)
  • 反序列化:json格式字符串转换dict json.loads(j)
区别json字符串dict字典
数据格式'{“key1”:“value1”,“key2”:“value2”…}'

d = {key1: value1, key2: value2, key3: value3}

key

有序的、可重复的

只能是字符串

无序的,且key必须保持唯一

可以为字符串、元组、数字等不可变的对象

value任何形式、可以是多层嵌套结构数值、文本(不能嵌套)
其他键值对使用的引号只能是双引号键值对可以使用单引号,也可以使用双引号

面试题-什么是断言

  • 断言Assert用于在代码中验证实际结果与预期结果是否符合,如果测试用例执行失败会抛出异常并提供断言日志
  • 根据状态码、响应数据字段
  • 根据数据库校验,通过对应sql语句校验字段

面试题--如何做接口数据依赖

  • 从登陆接口响应结果通过jsonpath/正则表达式提取token/cookie
  • 将token设置全局变量
  • 查询接口token放在请求头/请求体,从全局变量读取出来,存放到对应位置
  • 数据参数化parameterized
    接口关联接口关联又称参数关联,在完成某一场景功能时,需要按顺序请求多个接口,此时接口之间会存在参数关联,比如:B接口的请求参数是通过调用A接口获取的,需要先请求A接口,从A接口的返回数据中拿到需要的字段值,将定义的全局变量以参数化的形式传给B接口,作为请求参数传入;
    核心业务接口场景化充值投资场景:从充值接口返回值中提取再把提取的值变成全局变量,作为请求数据赋值给投资接口;
    登陆请求场景:请求登录接口后获取到token值,后续其他接口请求时需要将token作为请求参数传入
    下单支付场景:下单–>支付场景,调用下单接口生成订单后会返回订单号,订单号传给支付接口进行支付

配置文件层configs

用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据) 

日志管理层logger

利用python自带模块logging创建日志器,根据日志不同级别(info,debug,warning,error,critical),将框架运行中产生的有效日志保存到指定的.txt结尾的文本文件;

代码运行层run.py

收集用例、执行用例生成测试报告reports

reports

 存放测试报告reports

jenkins持续集成

jenkins持续集成定时构建,快速反馈,执行完毕后会自动发送邮件通知;

总结

自动化测试发现的bug多吗

  • 不多自动化测试不是为了发现bug,是为了保证以前测试过的case不出现新的bug;
  • 自动化测试的目的:
  1. 引入自动化测试,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,继而让业务人员把精力集中在更复杂的业务场景里;
  2. 一般来说相对稳定的功能场景更适合自动化;
  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值