学完能拿20k的接口自动化测试框架教程 涵盖框架源码+视频教程以及搭建流程

news2024/11/27 5:25:25

自动化测试

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。

特别是在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产品在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速进行回归,保证旧功能不被新功能影响而出现严重的Bug?)。

针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。

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

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

视频教程:【2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili】

接口自动化测试的价值

  1. 相比于UI自动化测试,接口自动化的维护成本更低,主要体现在以下几个方面
    • 在分层测试金字塔模型中,接口测试属于第二层服务集成测试,与UI自动化测试相比,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。
    • 前端页面变化快,而且UI自动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间,因此UI自动化实施起来比较困难。
    • 接口较稳定,接口的响应时间基本上都是秒级、毫秒级别,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作,比如:注册 --> 登录 --> 修改个人信息。
  2. 测试复用性
  3. 快速回归(提高回归的覆盖率、效率、稳定性)
  4. 可以运行更多更繁琐的测试,自动化的一个明显的好处是可以在较少的时间内运行更多的测试

接口自动化测试如何开展

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

自动化测试工具有很多,每种工具都有各自的优缺点,选择适合自身实际情况的框架,落地实施才是重点,具体选择哪种工具放在其他文章再说。

这里使用 Python + Requests + Pytest + Allure

举个栗子

接口文档(找了一个开放的接口用于测试)

接口信息:

 

bash

复制代码

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

参数:

名称类型是否必填描述
typeStringname,根据名称查询
keywordString高校名称,如:四川轻化工大学

请求示例:

 

ini

复制代码

POST /home/daxue/ajax HTTP/1.1 Host: www.iamwawa.cnuser-agent: ChromeContent-Type: application/x-www-form-urlencodedCookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23Content-Length: 54 type=name&keyword=四川轻化工大学

响应示例:

 

json

复制代码

{"status":1,"info":"查询成功!","data":[{"id":"2181","name":"四川轻化工大学","code":"4151010622","department":"四川省","city":"自贡市","level":"本科","remark":""}]}

线性脚本
 

ini

复制代码

import requests res = requests.post(url="https://www.iamwawa.cn/home/daxue/ajax", 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

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

但是,问题也随之而来,线性脚本的缺点也暴露出来了:

  1. 测试的输入和断言都是捆绑在脚本中,易读性差
  2. 无共享或重用脚本,可复用性低
  3. 线性脚本修改代价大,维护成本高,不便于后期优化
  4. 容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败

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

接口自动化测试框架

  • 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生成的定制化报告

 总结:

 给大家准备了这套从功能测试到测试开发的视频教程+文档+项目+面试宝典+简历模板资料包。

点击小编主页的推广小卡片验证信息填:000获取

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

一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九, 银行业务测试

十,大数据测试和业务分析

 

 十一:项目实战

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

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

相关文章

【已验证】微信小程序php连接SQL Server数据库代码

微信实现通过PHP连接到数据库,分为三步:首先写index.php的接口代码,然后在微信小程序的js页面上调用php接口方法连接到数据库(通过url地址的方式),最后在小程序的wxml页面将控制台的数据显示在页面上。 微信…

口袋参谋:如何挑选淘宝热词?这一招很重要!

​在电商行业待了快十年之久了,据我的了解99.99%的中小卖家,在开店初期根本就不知道如何选词! 最后选出来的关键词,无非就一种结果,那就是根本搜不到宝贝,或者就干脆没人搜,根本没流量&#xf…

数据库数据迁移常见方式

数据库数据迁移常见方式 数据库数据迁移常见方式1、通过sql2、通过数据迁移工具3、云服务进行数据迁移什么是DRS服务如何使用DRS服务DRS云服务可以干什么 数据库数据迁移常见方式 1、通过sql 批量导入sql insert into tableName select * 2、通过数据迁移工具 在数据库里面…

概念解析 | 数字通信中的调制技术

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:调制。 数字通信中的调制技术 一、背景介绍 在数字通信系统中,信息源产生的信息信号通常是低频基带信号,而用于传输的载波通常是高频正弦信号。为了将信息信号有效地加载到载波…

Spring RabbitMQ那些事(1-交换机配置消息发送订阅实操)

这里写目录标题 一、序言二、配置文件application.yml三、RabbitMQ交换机和队列配置1、定义4个队列2、定义Fanout交换机和队列绑定关系2、定义Direct交换机和队列绑定关系3、定义Topic交换机和队列绑定关系4、定义Header交换机和队列绑定关系 四、RabbitMQ消费者配置五、Rabbit…

npm ERR! code ERESOLVE,npm ERR! ERESOLVE unable to resolve dependency tree

前言 当你第一次下包,或者删除node_module之后,突然npm i报错,这是因为npm版本导致的 可能是某些包版本跟npm 不兼容导致的(peerDependencies) npm ERR! code ERESOLVE,npm ERR! ERESOLVE unable to resolve depend…

mysql之高阶语句

1、使用select语句,用order by对表进行排序【尽量用数字列进行排序】 select id,name,score from info order by score desc; ASC升序排列(默认) DESC降序排列(需要添加) (1)order by结合whe…

怎么写好宣传稿件?纯干货

企业宣传稿件撰写并不难,有框架、有模板,再有知识储备就行,今天伯乐网络传媒和大家分享新闻稿写作套路,超实用的新闻稿套路➕模板,教你从0到1学会企业宣传稿写作!纯干货,建议收藏起来慢慢看&…

uniapp原生插件之安卓友盟消息推送原生插件

插件介绍 安卓友盟消息推送原生插件,支持自定义响铃,震动,免打扰时间段,厂商离线推送等 插件地址 安卓友盟消息推送原生插件 - DCloud 插件市场 详细使用文档 uniapp 安卓友盟消息推送原生插件使用文档 超级福利 uniapp 插…

深度学习_10_softmax_实战

由于网上代码的画图功能是基于jupyter记事本,而我用的是pycham,这导致画图代码不兼容pycharm,所以删去部分代码,以便能更好的在pycharm上运行 完整代码: import torch from d2l import torch as d2l"创建训练集&创建检测集合"…

STM32 TIM定时器,配置,详解(1)

计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器,顾名思义,先预备一下分频,有时候频率过高,后面的定时器承受不住,就先用PSC先分频一下。如何分频的?将每接受到…

PTE作文练习(一)

目录 65分备考建议 WE模版 范文 Supporting ideas: SWT 65分备考建议 RA重在多听标准的正确的示范,RS重在抓大放小,WFD重在整理错题,以及反反复复的车轮战,FIBRW重在“以对代记” 就是直接看答案,节约时间&#…

Python编程的四个关键点——都知道吗?快来查漏补缺!

文章目录 前言一、Python 中的类型提示二、Python 虚拟环境和包管理三、新的 Python 语法四、Python 测试关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小…

响应式新闻博客资讯网站模板源码带后台

模板信息: 模板编号:29779 模板编码:UTF8 模板分类:博客、文章、资讯、其他 适合行业:博客类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原创设计、手工书写DIVCSS&a…

uniapp原生插件之安卓腾讯Bugly专业版原生插件

插件介绍 Bugly专业版是TDS腾讯端服务(Tencent Device-oriented Service)旗下的端质量监控平台,通过采集、监控、定位、告警等核心能力,提供专业的质量监控服务,帮助开发者及时发现并解决质量问题,打造高质…

SQL注入漏洞:CMS布尔盲注python脚本编写

SQL注入漏洞:CMS布尔盲注python脚本编写 文章目录 SQL注入漏洞:CMS布尔盲注python脚本编写库名爆破爆破表名用户名密码爆破 库名爆破 import requests #库名 database"" x0 while requests.get(urlf"http://10.9.47.77/cms/show.php?id33%20and%20length(data…

动态规划实例——01 背包详解

题目描述 有 n 件物品,每件物品有一个重量和一个价值,分别记为 w1,w2,…,wn 和 c1,c2,…,cn。现在有一个背包,其容量为 wk,要从 n 件物品种任取若干件。要求…

Python---capitalize() 方法---把字符串的首字母大写,其他字符全部小写,title()方法--把字符串中的所有单词的首字母大写,组成大驼峰

capitalize 英 /ˈkpɪtəlaɪz/ v. 用大写字母书写(或印刷),把……首字母大写;为(开办或发展企业)提供资金;(将资产或股票)变现,使资本化;&…

Window10安装Docker

文章目录 Window10安装Docker前提条件Hyper -VWSL 2.0 安装包下载执行安装包更新 Window10安装Docker 前提条件 Hyper -V 如何启用 WSL 2.0 安装包下载 官网地址 下载后: 执行安装包 wsl --update等得有点久 重新打开 拉取一个helloworld镜像 说明已经…

[LeetCode] 4.寻找两个正序数组的中位数

一、题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 [1,3], nums2 [2] 输出&#xff1a…