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

news2024/9/20 6:28:59

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

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

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

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

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

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

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

  • 接口测试用例设计

  • 代码读取接口测试用例

  • 利用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报告)

结果

最后:

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

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

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

相关文章

《论文阅读18》JoKDNet

一、论文 研究领域:用于大尺度室外TLS点云配准的联合关键点检测和特征表达网络论文:JoKDNet: A joint keypoint detection and description network for large-scale outdoor TLS point clouds registration International Journal of Applied Earth Ob…

Java定时任务调用执行shell脚本实例

文章目录 Java代码1234 shell脚本 Java代码 1 2 3 4 shell脚本

检查nacos是否正常启动

可以通过以下几种方式检查nacos是否启动: 查看nacos日志文件:启动nacos时,控制台会输出一些信息,可以查看控制台输出的信息,如果显示“Server startup in XXX ms”等字样,则说明nacos已经启动。 查看端口…

【C++深入浅出】初识C++下篇(auto关键字、范围for、nullptr指针)

目录 一. 前言 二. auto关键字 2.1 auto的引入 2.2 auto简介 2.3 auto的使用细则 2.4 auto不能推导的场景 三. 基于范围的for循环(C11) 3.1 范围for的语法 3.2 范围for的原理 3.3 范围for的使用条件 四. 指针空值nullptr(C11) 一. 前言 上期我们介绍了c新增的两个重…

ERROR o.s.b.SpringApplication - Application run failed

报错: Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2023-08-25 18:32:41,704 main ERROR o.s.b.SpringApplication - Application run failed org.springframework.beans.factory.BeanCre…

路由器的简单概述(详细理解+实例精讲)

系列文章目录 华为数通学习(4) 目录 系列文章目录 华为数通学习(4) 前言 一,网段间通信 二,路由器的基本特点 三,路由信息介绍 四,路由表 五,路由表的来源有哪些…

tsmc standard cell命名规则

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 CKMUX2代表二输入clock mux,D2代表驱动强度X2,6T代表row高为6track,16P96C代表gate length和poly pitch,LVT就是low voltage thr…

鲜花小程序制作教程:让你的花店与时俱进

在当今的电子商务时代,消费者对于购物体验的要求越来越高。对于鲜花这一类商品,消费者更是希望能够方便快捷地购买到高品质的花卉,并且能够享受到一流的购物体验。为了满足消费者的需求,许多商家选择利用小程序来打造一流的鲜花购…

ssm化妆品配方及工艺管理系统源码和论文

ssm化妆品配方及工艺管理系统源码和论文083 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 课题的目的和意义 进入21世纪后我国的经济增长在全球脱颖而出,人们的生活质量也在不断地提高&#xff0…

【Java多线程学习7】JMM(Java内存模型)学习

JMM(Java内存模型)学习 一、什么是Java内存模型? 为什么需要JMM? JMM(Java内存模型),可以看作是Java定义的并发编程相关的一组规范,除了抽象了线程和主内存之间的关系之外&#xf…

Vulnhub系列靶机---JIS-CTF-VulnUpload-CTF01靶机

文章目录 1、网卡配置2、信息收集主机发现端口扫描目录扫描 3、漏洞探测4、漏洞利用一句话木马蚁剑 GetShellSSH连接提权 JIS文档说明 JIS-CTF-VulnUpload-CTF01靶机下载地址 该靶机有5个flag 1、网卡配置 开启靶机,看见加载的进度条按shift,看到如下界…

科普宣传片的投放渠道

科普宣传片通常以教育性和娱乐性为主导,力求在观众中引起兴趣和好奇心,以吸引他们主动学习和探索科学。它可以在电视台、网络平台、科普展览、学校教育等场合播放,对各个年龄段的观众都有普及科学知识的作用。接下来由深圳科普宣传片制作公司…

LeetCode——回溯篇(三)

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 46. 全排列 47. 全排列 II 332. 重新安排行程 51. N 皇后 37. 解数独 46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任…

uni-app实现点击显示隐藏列表,兼容微信小程序

效果&#xff1a; <view class"list-item" v-for"(item,index1) in listData" :key"index1"><view class"item-title" click"item.content.length>0?handleToggle(item,index1):"><view class"&qu…

Ansible学习笔记7

user模块&#xff1a; user模块用于管理用户账户和用户属性。 如果是windows要换一个win_user模块。 创建用户&#xff1a;present&#xff1a; [rootlocalhost ~]# ansible group1 -m user -a "nameaaa statepresent" 192.168.17.106 | CHANGED > {"ansi…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…

骨传导耳机有什么副作用? 骨传导耳机对身体有损伤吗

根据目前的科学研究和经验&#xff0c;骨传导耳机被认为是相对安全的使用设备&#xff0c;不会引起副作用&#xff0c;也不会对身体造成损伤&#xff0c;相比会对我们的耳朵听力起到一定的保护作用。 但是&#xff0c;个体差异和特殊情况可能会影响人们对骨传导耳机的感受与反应…

成集云 | 抖店客户静默下单催付数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着各品牌全渠道铺货&#xff0c;主播在平台上直播时客户下了订单后不能及时付款&#xff0c;第一时间客户收不到提醒&#xff0c;不仅造成了客户付款率下降&#xff0c;更大量消耗了企业的人力成本和经济。而成集云与钉钉深度合作&#xff0…

【C++实战】C++实现贪吃蛇(含源代码)—基于easyx图形库

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f340;本文前置知识&#xff1a;C基础 ♈️今日夜电波&#xff1a;toge—あよ 0:36 ━━━━━━️&#x1f49f;──────── 4:03 &a…

springboot整合jquery实现前后端数据交互

一 实施逻辑 1.1 前端 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"Generator" content"EditPlus"><meta name"Author" content""><meta n…