全网火爆,Python接口自动化测试,从0到1分层封装框架撸码(带接口)


前言

随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化测试的字眼,因此也是我们跳槽面试、升职加薪必备利器。

自动化测试又可分为接口自动化、Web UI自动化、App自动化,今天我们就来聊聊接口自动化测试。

Python接口自动化测试:https://www.bilibili.com/video/BV16G411x76E/

接口自动化测试的价值

1.与UI自动化测试相比,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。

2.前端页面变化快,而且UI自动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间,因此UI自动化实施起来比较困难。

3.接口较稳定,接口的响应时间基本上都是秒级、毫秒级别,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作,比如:注册 --> 登录 --> 修改个人信息。

接口自动化测试,测试复用性高,可以快速回归(提高回归的覆盖率、效率、稳定性),还可以运行更多更繁琐的测试,自动化的一个明显的好处是可以在较少的时间内运行更多的测试

工具选择

Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure
RobotFramework:关键词驱动的自动测试框架
基于Web的自动化测试平台(公司自主研发,成本较高,方便不懂编程也能使用)

自动化测试工具有很多,每种工具都有各自的优缺点,选择适合自身实际情况的框架,落地实施才是重点。

这里使用:Python + Requests + Pytest + Allure

接口自动化测试实战

接口文档
找了一个开放的接口用于测试
接口信息:

  • 名称:全国高校信息查询接口
  • 描述:用于查询全国高校信息
  • Host:https://www.iamwawa.cn/daxue.html
  • Request URL:/home/daxue/ajax
  • Request Method:POST
  • Content-Type: application/x-www-form-urlencoded
  • headers:user-agent:Chrome

参数:

名称 类型 是否必填 描述
type String name,根据名称查询
keyword String 高校名称,如:xxxxxx大学

请求示例:

POST /home/daxue/ajax HTTP/1.1
Host: www.iamwawa.cn
user-agent: Chrome
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23
Content-Length: 54

type=name&keyword=厦门大学

响应示例:

{
    
    
    "status": 1,
    "info": "查询成功!",
    "data": [
        {
    
    
            "id": "1124",
            "name": "厦门大学",
            "code": "4135010384",
            "department": "教育部",
            "city": "厦门市",
            "level": "本科",
            "remark": ""
        }
    ]
}

线性脚本:

import requests

res = requests.post(url="https://www.iamwawa.cn/daxue.html",
                    headers={
    
    "user-agent": "Chrome"},
                    data={
    
    "type": "name", "keyword": "厦门大学"})
assert res.status_code == 200
res_json = res.json()
print(res_json)
assert res_json["status"] == 1

使用以上代码,最基础最简单的接口测试就做起来了,好的开始就是成功的一半。

但是,问题也随之而来,线性脚本的缺点也暴露出来了:
测试的输入和断言都是捆绑在脚本中,易读性差;
无共享或重用脚本,可复用性低;
线性脚本修改代价大,维护成本高,不便于后期优化;
容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败;

所以,下一步就是如何优化线性脚本,也就是如何实现代码的高内聚低耦合,也是接口自动化测试框架要解决的问题。

请添加图片描述

说明:

base_api.py:对Requests库进行二次封装,完成对api的驱动

api:继承base_api,将http请求接口封装成Python方法

utils:CommonUtil,公共模块,将一些公共函数、方法以及通用操作进行封装,如:日志模块、yaml操作模块、时间模块

config:配置文件模块,配置信息存放,如:URL、Port、Headers、Token、数据库信息等

data:测试数据模块,用于测试数据的管理,数据与脚本分离,降低维护成本,提高可移植性,如:yml文件数据

cases:测试用例模块,用于测试用例的管理,这里会用到单元测试框架,如:Pytest、Unittest

run.py:批量执行测试用例的主程序,根据不同需求不同场景进行组装,遵循框架的灵活性和扩展性

logs:日志模块,用于记录和管理日志,针对不同情况,设置不同的日志级别,方便定位问题

reports:测试报告模块,用于测试报告的生成和管理,如:基于Allure生成的定制化报告

请添加图片描述

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有拼尽全力,才能看到真正的自己。无论前路多么坎坷,只要心中坚定,必将破茧成蝶,在风雨后的彩虹中展翅高飞!

只有拼尽全力,才能让人生更加精彩。不要畏惧困难,不要退缩放弃,只要心存信念,脚踏实地,相信自己的梦想一定会变成现实!

如果你想要改变世界,那么必须先改变自己。只有不断克服困难,不断追求进步,才能在奋斗的道路上越走越宽广,终将成就辉煌人生!

猜你喜欢

转载自blog.csdn.net/shuang_waiwai/article/details/130202132
今日推荐