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

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

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.mzph.cn/news/61791.shtml

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

相关文章

【C语言练习】C语言如何操作内存(重中之重!!!)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

SpringCloud(十)——ElasticSearch简单了解(二)DSL查询语句及RestClient查询文档

文章目录 1. DSL查询文档1.1 DSL查询分类1.2 全文检索查询1.3 精确查询1.4 地理查询1.5 查询算分1.6 布尔查询1.7 结果排序1.8 分页查询1.9 高亮显示 2. RestClient查询文档2.1 查询全部2.2 其他查询语句2.3 排序和分页2.4 高亮显示 1. DSL查询文档 1.1 DSL查询分类 查询所有…

import type {} from ‘module‘ 具体解释

import type { AxiosInstance, AxiosRequestConfig } from axiosimport type { RequestConfig, RequestInterceptors } from ./typesimport type {} from module 是 TypeScript 中的一种导入语法,用于导入类型声明而不导入具体的值,它告诉 TypeScript 编…

mysql数据文件

提示:mysql相关系列的教程和笔记不断持续更新和完善 文章目录 db.opt 文件FRM 文件MYD 文件MYI 文件IBD 文件和 IBDATA 文件 :ibdata1 ibdata n文件 查看数据文件的位置 获取硬盘中数据存储的位置: SHOW VARIABLES LIKE datadir;db.opt 文件 该文件记录…

SSM商城项目实战总结

SSM商城项目实战总结 编程思想是指在软件开发过程中,程序员所遵循的一种思维模式或方法论。它是指导程序员如何组织和解决问题的一种思考方式。下面是对常见的编程思想进行的总结: 面向对象编程(OOP):面向对象编程是一…

分布式锁实现一. 利用Mysql数据库update锁

文章目录 分布式锁1、什么是分布式锁:2、分布式锁应该具备哪些条件: 基于数据库的分布式锁代码传送代码运行 分布式锁 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题…

app易用性测试报告 软件app测试

易用性测试 app易用性测试应遵从GB/T25000.10-2016、GB/T25000.51-2016中的有关成熟性、可用性、容错性、易恢复性等方面的可靠性要求。依据应用场景需要,可让用户较长时间连续运行或使用APP,不应出现崩溃、闪退、卡死、无响应、响应迟缓等问题。 根据…

C++11多线程

1.线程&#xff1a;独立调度的基本单位。进程&#xff1a; 资源分配的基本单位。 2.C11新标准多线程支持库 < thread > : 提供线程创建及管理的函数或类接口&#xff1b; < mutex > : 为线程提供获得独占式资源访问能力的互斥算法&#xff0c;保证多个线程对共享资…

11、监测数据采集物联网应用开发步骤(8.2)

监测数据采集物联网应用开发步骤(8.1) 新建TCP/IP Client线程类com.zxy.tcp.ClientThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import datetime import socket import threading import timefrom com.zxy.adminlog.Us…

关于flutter中 initState() 与 setState() 用法

initState()函数是在组件渲染之前执行的。在Flutter中&#xff0c;initState()是StatefulWidget的生命周期方法之一&#xff0c;在调用build()方法之前被调用。当创建一个StatefulWidget并将其添加到组件树中时&#xff0c;Flutter会实例化该组件的状态对象&#xff0c;并在调用…

防破解方法:文字提示信息都经过编码加密处理

本篇文章属于《518抽奖软件开发日志》系列文章的一部分。 我在开发《518抽奖软件》&#xff08;www.518cj.net&#xff09;的时候&#xff0c;为了防止被破解&#xff0c;需用添加一些暗桩等&#xff0c;需要提示用户不要用盗版。破解者会根据提示信息找到暗桩的位置&#xff0…

深度学习-4-二维目标检测-YOLOv3模型

单阶段目标检测模型YOLOv3 R-CNN系列算法需要先产生候选区域&#xff0c;再对候选区域做分类和位置坐标的预测&#xff0c;这类算法被称为两阶段目标检测算法。近几年&#xff0c;很多研究人员相继提出一系列单阶段的检测算法&#xff0c;只需要一个网络即可同时产生候选区域并…

Linux:编译遇到 Please port gnulib freadahead.c to your platform ,怎么破

问题背景 编译m4时遇到以下错误&#xff0c;该怎么解决呢&#xff1f; 解决方法 进入m4的build目录&#xff1a;build/host-m4-1.4.17 输入命令&#xff1a; sed -i s/IO_ftrylockfile/IO_EOF_SEEN/ lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/std…

堆栈深度超过限制

报错&#xff1a;Cause: com.kingbase8.util.KSQLException: 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足够大后&#xff0c;增加配置参数 "max_stack_depth"的值(当前值为2048kB).; 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足…

机器学习和数据挖掘03-模型性能评估指标

Accuracy&#xff08;准确率&#xff09; 概念&#xff1a;模型正确预测的样本数量与总样本数量的比例。 公式&#xff1a;Accuracy (TP TN) / (TP TN FP FN) TP (True Positives)&#xff1a;正确预测为正例的样本数。即模型正确地将正例判定为正例。 TN (True Negati…

go中runtime包里面的mutex是什么?runtime.mutex解析

其实在看go源码的时候&#xff0c;发现除了sync包里有个mutex以外&#xff0c;runtime包里也有一个mutex&#xff0c;这个mutex在runtime很多地方都在用。 这个runtime包里面的mutex的结构如下&#xff1a; 目录: /runtime/runtime2.go 代码&#xff1a; type mutex struct …

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像...

原文链接&#xff1a;http://tecdat.cn/?p24346 在今天产品高度同质化的品牌营销阶段&#xff0c;企业与企业之间的竞争集中地体现在对客户的争夺上&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 “用户就是上帝”促使众多的企业不惜代价去争夺尽可能多的客…

常用的 hooks 函数

React 的 Hooks 为函数组件引入了之前只能在类组件中使用的功能和生命周期特性。以下是一些常用的 Hooks&#xff1a; 1. useState: 允许函数组件有内部状态。返回一个状态变量和一个设置该状态的函数。 const [count, setCount] useState(0);2. useEffect: 用于执行副作用…

OpenCV(四):Mat支持的运算

目录 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 2.Mat类支持逻辑与、或、非等逻辑运算&#xff0c; 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 加法&#xff1a;Mat Mat&#xff0c;保存到 resul…

【1】openGL glew示例代码分析绘制一个三角形

openGL文档 > docs.gl &#xff0c;可以直接查询函数的定义和使用 #include <iostream> #include <string> #include <GL/glew.h> #include <GLFW/glfw3.h>int main(void) {GLFWwindow* window;/* Initialize the library */if (!glfwInit())retu…