接口自动化核心知识点浓缩,为面试加分

news2025/1/10 2:56:03

日常接触到的接口自动化从实际目标可以划分为两大类:

为模拟测试数据而开展的接口自动化

这种接口自动化大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。

在功能测试之前提前发现错误而开展的接口自动化

这种接口自动化的工作流程跟功能测试一样,需要设计接口测试用例,然后执行接口测试用例。

说白了就是对单接口进行功能校验,包括接口参数的必填性、长度字符类型限制、入参枚举值等是否正确、响应数据是否正确等进行校验。

本文主要讲解第二种的接口自动化测试。浓缩了接口自动化的核心点进行实战,该实战或许能成为面试的加分点。

接口测试用例设计

代码读取接口测试用例

利用pytest框架实现接口自动化

利用python-requests完成接口请求

利用jenkins+allure实现持续构建和输出测试报告

需求分析

Excel管理接口测试用例

Pytest框架运行测试用例

Jenkins集成构建

Allure展示测试报告

数据准备

了解接口

1.接口请求方式:get

2.接口请求头:{“Content-Type”: “text/html;charset=utf-8”}

3.接口请求体:{“key”: "*****************,“type”: “”}

4.参数值:type=guoji、keji、yule,默认top

5.新闻请求:http://v.juhe.cn/toutiao/index

备注:接口请求的key需要自行去聚合数据平台申请。

设计接口测试用例

接口测试用例设计思路跟功能测试用例设计一致,基本是是校验:必填项、字符类型长度限制、入参内容等。

接口部分用例设计如下:(仅供参考)
在这里插入图片描述

脚本目录设计

完整的接口自动化测试,一般分为:数据、公共配置、接口脚本、报告四大基础文件夹。

数据:Data文件夹用于存放数据,例如测试用例文档

公共脚本:Common文件夹用于存放公共方法的代码文件,例如:读取测试用例代码文件等

接口脚本:Request文件夹用于存放各个不同业务接口的代码文件,例如:获取新闻头条接口代码文件等

报告:Report文件夹,用于存放测试结果报告

脚本设计相关知识点

读取测试用例

知识点1

xlrd读取excel的基础方法

1.打开文件对象:fb=xlrd.open_workbook(‘xls测试用例文件路径’)

2.获取工作表名称:sheetnames=fb.sheet_names ()

3.打开测试用例所在工作表:casesheet=fb.get_by_name(‘’用例所在工作表名称)

4.获取测试用例条数(表格行数):rows=casesheet.nrows

5.获取工作表内单元格值:cell_value=casesheet.cell_values(x,y),其中x 和y为单元格的横坐标和纵坐标

6.由于需要通过pytest的装饰器进行参数化,所以读取到的单元格需要组合成列表的模板

例如:

case1=[‘url_01’,’method_01’,{body_01 },’expect_01’]
case2=[‘url_02’,’method_02’,{body_02 },’expect_02’]

 最后提供给pytest读取的数据应该是:

[[‘url_01’,’method_01’,{body_01 },’expect_01’],
[‘url_02’,’method_02’,{body_02 },’expect_02’]]

代码片段:

使用列表追加的方法append()。

在这里插入图片描述

备注:通过cell_values()读取到的单元格数据,默认是字符串str类型。

知识点2:数据转化

1.url、method是字符串类型,所以无需转化

2.header和body需要通过json.loads()转为json格式

接口请求

知识点1

requests接口请求基础

1.发起接口请求:

resq=request.get()
resq =request.post()

2.获取响应数据并转为json格式:resq.json()

3.断言:assert

4.提取响应内容:jsonpath语法

response[‘msg’]
response[‘data’][‘name’]

知识点2:pytest框架

环境安装:

pip install pytest

1.Pytest使用规则:用例和脚本文件必须以test开头

2.参数化执行用例:Pytest装饰器@pytest.mark.aprametrize()

a)单个参数写法:@pytest.mark.parametrize(‘inData’,[10,20]),第一个参数为变量名称,第二个为参数值。不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取。

b)多个参数写法:(参数值以元组形式写)@pytest.mark.parametrize(‘第一个参数名称,第二个参数名称’),[(第一个参数的第一个值,第一个参数的第二个值),(第二个参数的第一个值,第二个参数的第二个值)]。

c)不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取。在这里插入图片描述

3.本地调试运行脚本:

接口自动化运行脚本到生成allure-html报告,分为2步骤:

第1步:alluredir生成测试报告数据源文件json,存入report文件夹内

pytest.main([‘接口请求脚本文件.py’,‘-s’,‘–alluredir=…/report/’])

第2步:从report文件夹内将测试报告数据源文件json转为html报告

os.system(‘allure generate …/report/ -o …/report_html/’)

持续构建

知识点:jenkins构建+allure测试报告

1.Jenkins环境搭建

2.下载allure报告插件

3.构建

a)构建:利用pytest命令执行脚本,并生成allure源数据

b)构建后操作:添加allure report(jenkins会自动将allure源数据组合成html报告)在这里插入图片描述

结果在这里插入图片描述


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


一、Python编程入门到精通


二、接口自动化项目实战 

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!
【软件测试技术交流(免费领取全套软件测试资料)】:320231853(备注C)icon-default.png?t=N5K3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=HKDoSdCkRR5236N1DlgX2h9973O1grY3&authKey=sLleylQzrdBAqIgw64E2%2BjCNiSRlHmc6obzKPpN6htPsEFd97a4FgKx4%2Bt4Qx%2Fw%2F&noverify=0&group_code=320231853

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

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

相关文章

Nuendo 12.0.70 资源下载及功能介绍

简介 Nuendo 12是一款屡获殊荣的影视、游戏和沉浸式环绕声音频后期制作软件,Nuendo 12在对白录音和编辑方面做了重大改进,为你的录音带来新声。Nuendo12把“对白”制作放到一个非常重要的位置,比以前更加贴近用户,它甚至起了一个…

读书笔记-《ON JAVA 中文版》-摘要19[第十八章 字符串-2]

文章目录 第十八章 字符串6. 常规表达式6.1 基础6.2 创建正则表达式6.3 量词6.4 CharSequence6.5 Pattern 和 Matcher6.5.1 find()6.5.2 组(Groups)6.5.3 start() 和 end()6.5.4 split()6.5.5 替换操作6.5.6 reset() 7. 扫描输入7.1 Scanner 分隔符7.2 用…

Python 解释器

文章目录 每日一句正能量前言交互式编程脚本式编程 每日一句正能量 不是因为生活太现实,而对生活失望;而是知道生活太现实,所以更要用心的活下去。给自己一个拥抱。 前言 Python 解释器是运行 Python 代码的工具,主要分为官方提供…

MySQL索引结构(面试题)、索引分类、语法

2索引 2.1 索引概述 2.1.1 介绍 ​ 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据&#xff…

【2022吴恩达机器学习课程视频翻译笔记】3.2线性回归模型-part-2

3.2线性回归模型-part-2 Let’s look in this video at the process of how supervised learning works. Supervised learning algorithm will input a dataset and then what exactly does it do and what does it output? Let’s find out in this video. Recall that a tr…

BeanUtils.copyProperties的11个坑

前言 我们日常开发中,经常涉及到DO、DTO、VO对象属性拷贝赋值,很容易想到org.springframework.beans.BeanUtils的copyProperties 。它会自动通过反射机制获取源对象和目标对象的属性,并将对应的属性值进行复制。可以减少手动编写属性复制代码…

高级Android开发人员枯竭,在这个利润丰厚的领域如何蓬勃发展

为什么高级人才供不应求? 技术行业的发展速度非常快,新的技术和工具不断涌现,导致技能需求不断演变。这使得不断更新和学习变得至关重要。行业发展速度超过了教育和培训体系的能力跟进。传统教育往往滞后于最新的技术趋势和实践,…

暑期数学建模赛事总结--小白快速入门数学建模

暑期数学建模赛事总结–小白快速入门数学建模 欢迎各位大神小白一起参加数学建模!!! 这是我自己总结的一些关于数学建模的代码和资料,放在github上供大家参考:https://github.com/HuaandQi/Mathematical-modeling.git…

线程 线程池

大屏展示 10个线程同时查询统计各个表,并行处理, 主线程 把任务投递 给 线程池,线程池中调出一个线程去处理 希望以一种 轻量级的 方式 实现 "i" 线程安全 : compareAndSwap() : 针对某个变量实现 或 -- 确保线程安全 …

QSciintilla_gpl-2.10.8版本在QT6中编译问题解决方案汇总

1. QWheelEvent (1)event->delta()需修改为event->angleDelta().y(); 2. sprintf": 不是 "QString" 的成员 sprintf->asprintf 3. 无法打开QTextCodec .pro文件中添加 greaterThan(QT_MAJOR_VERSION, 5) { …

试运行llama-7B、vicuna-7b-delta-v1.1和vicuna-7b-v1.3

Chatgpt的出现给NLP领域带来了让人振奋的消息,可以很逼真的模拟人的对话,回答人们提出的问题,不过Chatgpt参数量,规模,训练代价都很昂贵。 幸运的是,出现了开源的一些相对小的模型,可以在本地或…

MySQL安装失败starting the sever

MySQL安装失败starting the sever 如果电脑是第一次安装MySQL,一般不会出现这样的报错。starting the sever失败,通常是因为上次安装该软件没有清除干净。 第一种解决方法:完全卸载mysql,重新安装 完全卸载该软件的办法&#…

Linux基础开发工具(yum、vim、gcc/g++、Makefile、gdb、git)

目录 一. yum yum list yum install yum remove 二. vim 命令模式 底行模式 多文件操作 批量注释 三. gcc/g 四. make/Makefile 五.gdb 六. git git clone git commit git push 一. yum 作为一款操作系统,免不了需要一些定制化的内容,这…

工地为什么要做能耗监测?

随着全球气候变化的影响日益严重,环保意识逐渐深入人心,绿色建筑和节能减排成为了建筑行业的热门话题。而在建筑工地中,能耗监测成为了一项不可或缺的任务。本文将从以下几个方面来探讨工地为什么要做能耗监测。 首先,能耗监测有助…

【新星计划·2023】Linux目录与文件之权限意义讲解

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 通过上篇文章,我们知道了Linux 系统内文件的三种身份(拥有者、群组与其他人),还知道每种身份都有三种权限(rwx)…

【小梦C嘎嘎——启航篇】C++ 基础中的精华(一)

C 基础中的精华(一)😎 前言🙌1、namespace(命名空间)的经典知识1.1 namespace 日常如何正确使用?1.2 cout和cin来源,以及为什么相对于C语言中的printf和scanf有自动识别数据类型的功…

记一次用arthas解决springboot项目引入ShardingSphere后启动过慢的问题

背景: springboot项目中由于需要加入了ShardingSphere,之后就发现项目启动时间由之前的十多秒,延长到了70秒左右,去除ShardingSphere之后又恢复十多秒。一直以为是ShardingSphere的问题,网上搜罗了各种信息&#xff0c…

华安联大 | 蓝牙人员定位与UWB人员定位技术的应用案例分析

引言:随着物联网和定位技术的快速发展,蓝牙人员定位和UWB人员定位成为了人员定位领域的两种重要技术,两者都能在安防、工业、矿山、救灾、海航等领域得到广泛的应用。 在这有用户或会问蓝牙人员定位和UWB人员定位谁优谁劣,那么这…

2023.7.5例题:HCIA初级实验-2

一、题目要求: 1.在AR1左侧使用DHCP协议使左边可自动获得ip,左侧为192.168.1.0网段ip 2.右侧使用手动配置ip---右侧为192.168.2.0网段ip 3.telent客户端可远程登录到AR1 4.笔记本可以访问DNS获取文件 5.全网可达 二、解题步骤 第一步: 在AR1左侧使…

Charles 工具如何做断点测试?

在测试工作过程中,我们经常会在程序的某一行或者某一环节设置断点,在程序请求的过程中,修改断点处的参数、请求或者响应,借此定位问题,这就是所谓的断点测试。这类断点测试主要用于接口测试。 断点测试可以通过查看接…