python API自动化(接口测试基础与原理)

news2024/11/23 19:08:09

1.接口测试概念及应用

                什么是接口

 接口是前后端沟通的桥梁,是数据传输的通道,包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口,同级接口

                外部接口:比如你要从 别的网站 或 服务器 上获取 资源或信息 ,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。比如说:支付接口,沙箱,Mock.....
                

                 内部接口方法与方法之间,模块与模块之间的交互,程序内部抛出的接口。比如:bbs系统,有登陆模块,有发帖模块等等,那你要发帖就必须先登陆,那么这两个模块就有交互,我们在测试的时候都用通过工具才能调试和测试

                        

        如图所示,我们提供了账号密码,通过http协议接口访问服务器,服务器再通过接口访问资料数据库和代码进行校验 ,校验的接口通过服务器返还给客户端进行响应

         什么是接口测试:接口测试分为两种手段:手工测试、自动化测试

            接口测试是对系统或组件之间的接口进行测试,主要校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。而接口自动化测试是让程序代替人为对接口项目进行自动化验证测试的过程

                手工测试:页面--登录功能时候--对登录接口测试

                自动化测试:自动、无人值守--知识点:CICD--持续集成

                我们进行测试应该借助某些工具去完成:postman、jmeter 、代码等

                接口测试的意义                             

               1.项目成本、时间成本---更低

                2.更早进入测试环节---效率

                3.接口(不会频繁变动)--- 节约成本

                4.跳过前端的校验(正则),直接访问接口。(确定前端和后端同时做校验)---安全着想

                

2.HTTP请求的核心概念及原理

重点HTTP的请求头、请求体、响应码解析

           核心请求四要素:

                1.接口URL:IP地址+端口+路径

                 2. 接口请求方法:get post delete put...

               3.接口请求参数:用户名 密码

                 4. 接口响应报文

                缩略的词:

                        URL: 统一资源(图片、网页、视频...)定位符(地方)--- 地址 :www.baidu.com

                        HTML: 超文本标记语言,特点:成对出现:内容--- 前端常用

                        HTTP: 常用的协议 --- 超文本传输协议

                        

                        URL详解:

                        协议:客户端和服务器通讯的标准,http、https、ssh等

                        host: IP或域名,比如上面的localhost(127.0.0.1)- 本机

                        www.baidu.com (14.119.104.254) --- 背后都是对应的ip--相当于是对应的网络的                          地址 ---某台电脑程序:mysql :3306 、tomcat:8080、....(域名化方便记忆)

                        端口号:协议默认的端口号是可以省略的(http:默认端口80、 https:默认端口                            443、ssh:默认端口22)

                        资源路径:资源存放的位置,资源可以是各种超文本信息,如音频、视频等,如                             上:/index.php

                         参数:如 ?m=Home&c=Goods&a=goodsInfo&id=46 ;格式:用?与URL的主体部                           分分开,参数的格式 参数名=参数值 ,有多个参数时用&拼接即可

                  HTTP详解:

                        HTTP: 常用的协议 --- 超文本传输协议:请求--- 响应协议 ----

                        怎么通信的呢?TCP/IP协议

                        HTTP包含哪些请求:请求行、请求头、请求体                  

                    请求行:请求方法、请求地址(URL)、协议版本

                    请求头:很多字段、看不懂,系统固定的。告诉服务器我需要什么样的资源、描述                       对应的请求。

                  注意:cookie(鉴权)、content-Type(告诉我们传输数据的格式是什么,要和请求体                    当中的数据格式一一对应)

                        Content-Type取值与body传值方式对应关系:

                        

                     请求体:请求参数--- 后面再说--- 这个接口的对应的参数:get请求一般是在url当                            中;post一般在body当中

HTTP的请求方法

    

                        

     响应的详解: 

 响应行、响应头、响应正文 ---通过对应的请求得到对应的响应数据 

        响应行: 协议版本、状态码、状态信息     

        常见的状态码有哪些?

        1xx:指示信息--表示请求已接收,继续处理

        2xx:成功--表示请求已被成功接收、理解、接受

        3xx:重定向--要完成请求必须进行更进一步的操作

        4xx:客户端错误--请求有语法错误或请求无法实现

        5xx:服务器端错误--服务器未能实现合法的请求

        常见状态码:     

  • 200 OK//客户端请求成功
  • 400 Bad Request//客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized//请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden//服务器收到请求,但是拒绝提供服务
  • 404 Not Found//请求资源不存在,eg:输入了错误的URL
  • 500 Internal Server Error//服务器发生不可预期的错误
  • 503 Server Unavailable//服务器当前不能处理客户端的请求,一段时间后可能恢复正常

        响应头

告诉客户端我返回的一些数据的情况,比如大小、时间、返回数据格式...

        响应正文

具体的响应数据得到以后,我们对应的前端会进行渲染,得到用户能够看明白的               数据格式及样式等等。

5.接口测试

                接口测试流程

                
 

        我们来看一个注册接口的用例

          我们先来看看文档

        

        接口URL : 协议+域名+路径 + 公共参数

http://shop-xo.hctestedu.com?s=api/user/reg&application=app&application_client_type=weixin

        请求方法:POST

          请求参数:需要和请求头的content-type 一 一 对应

           正常情况:          

  1. 有些接口文档会告诉你这个字段是什么请求类型---直接选择即可
  2. 一般用form表单提交 (字段相对比较少),【默认】
  3. 提交的有对应的图片:from-data
  4. 字段非常多,或者它的数据{XXXX:XXXX}:raw-json

        响应数据:            

             --- 期望结果:

           1. 输入正确的数据:注册成功

             2. 输入已经存在的数据:账号已存在

          .... --- 测试用例设计 (请求参数不同数据的组合)

        执行CASE---工具JMeter

                

  • 测试计划:测试起点,所有组件的容器
  • 线程组:代表一定数量的用户
  • 取样器:向服务器发送请求的最小单元
  • 逻辑控制器:结合取样器实现一些复杂的逻辑
  • 前置处理器:在请求之前的工作
  • 后置处理器:在请求之后的工作
  • 断言:判断请求是否成功
  • 定时器:负责请求之间的延迟间隔。常用的有固定,高斯,随机
  • 配置元件:配置信息
  • 监听器:收集结果

我们填入对应的值

        添加监听器收集结果

        

响应=== 实际结果 --- 进行获取:msg字段 ---json提取器

测试用例===期望结果

我们可以通过添加断言来判断结果是否符合预期

        

        

                        

请求默认面板

        

        可以把不会经常修改的参数放入其中

        

环境变量 --- 这种不会经常改动的东西---就得这么去做

设置变量 --- 用户定义的变量 --- 引用变量:${变量名}

我们设置了环境变量之后我们http里的请求就如下所示

        

数据驱动(DDT)--把接口数据提取出来     

  1. 数据准备阶段
  2. 利用csv进行引用

        我们再加入循环控制器 循环我们的用例数

        再修改断言

接口测试当中,怎么解决是谁的问题?--判别是谁就是有个通用的:token(软件当中的身份证号)

        

  1. 登录 --- 登录成功之后会在响应数据或者请求头当中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通过登录用户去加入购物车 :请求数据会需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url

接口关联

【接口关联】:通过登录用户去加入购物车

  1. 登录 --- 登录成功之后会在响应数据或者请求头当中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通过登录用户去加入购物车 :请求数据会需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url
  3. ...
  4. ...

Jmeter怎么连接数据库

        1.填写如下数据,并且取一个名字

2. 填写请求:需要引用上面的名字,正常写对应的sql --- 会有多个数据:sqlname+ 下标

3. 在测试计划当中必须引用对应的jar包

   

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

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

相关文章

网站调用Edge浏览器API:https://api-edge.cognitive.microsofttranslator.com/translate

Edge浏览器有自带的翻译功能,在运行pc项目可能会遇到疯狂调用Edge的API https://api-edge.cognitive.microsofttranslator.com/translate 这个URL(https://api-edge.cognitive.microsofttranslator.com/translate)指向的是微软服务中的API接…

OpenCV中的圆形标靶检测——背景概述

圆形标靶 如下图所示,相机标定中我们使用带有固定间距图案阵列的平板,来得到高精度的标靶像素坐标,进而计算得到相机的内参、畸变系数,相机之间的变换关系,和相机与世界坐标系的变换关系(即外参)。 不过标靶的形式多样,从图案类型来看常见的有棋盘格、圆形标靶…

Paper Survey——3DGS-SLAM

之前博客对多个3DGS SLAM的工作进行了复现及代码解读 学习笔记之——3DGS-SLAM系列代码解读_gs slam-CSDN博客文章浏览阅读1.9k次,点赞15次,收藏45次。最近对一系列基于3D Gaussian Splatting(3DGS)SLAM的工作的源码进行了测试与…

windows根据时间自定义默认应用模式

Target 将“默认应用模式“能否设置为早上7点为“亮”,到了晚上7点设置为“暗”,每天都执行以下这个任务。 这样我的很多应用软件(e.g., chrome, explorer)就可以到点变黑,到点变白了 ChatGPT answer (亲测有效): 你可以使用Windows的任务计…

记录遇见的小问题

1&#xff0c;angularjs 使用bootstrap时&#xff0c;遇见模态框怎么点击空白处不关闭&#xff1b; <div id"dialog-modal" data-backdrop"static" data-keyboard"false"> 但是在实际使用过程中调用了一个html 需要在 js里加 $scope.Up…

【Elasticsearch】es基础入门-03.RestClient操作文档

RestClient操作文档 示例&#xff1a; 一.初始化JavaRestClient &#xff08;一&#xff09;引入es的RestHighLevelClient依赖 <!--elasticsearch--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest…

【UE+GIS】UE5GIS CAD或shp构建3D地形

贴合地形的矢量图形实现方法 一、灰度图的制作和拉伸换算1、基于高程点集实现2、基于等高线实现3、拉伸计算 二、生成地形模型的实现方案1、3Dmax导入灰度图2、使用ArcMap/Arcpro/FME等GIS数据处理工具3、UE导入灰度图 三、地形上叠加地形渲染效果的实现方案1、贴花2、数据渲染…

矩阵链相乘(动态规划法)

问题分析 矩阵链相乘问题是一个经典的动态规划问题。给定一系列矩阵&#xff0c;目标是找到一种最优的乘法顺序&#xff0c;使得所有矩阵相乘所需的标量乘法次数最少。矩阵链相乘问题的关键在于利用动态规划来避免重复计算子问题。 算法设计 定义子问题&#xff1a;设 &…

ETL or iPaaS,企业数据集成工具选择攻略

随着信息技术的飞速发展&#xff0c;企业对于数据的处理和分析需求愈发强烈&#xff0c;数据集成作为实现数据价值的重要手段&#xff0c;其技术和工具的选择成为业界关注的焦点。 传统ETL&#xff08;Extract, Transform, Load&#xff09;数据集成方法长期以来被广泛应用。然…

探索数据结构:堆,计数,桶,基数排序的分析与模拟实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 堆排序 1.1. 算法思想 堆排序(Heap Sort)是一种基于堆数据结构的排…

在IDEA中使用Git在将多次commit合并为一次commit

案例&#xff1a; 我想要将master分支中的 测试一、测试二、测试三三次commit合并为一次commit 1. 点击Git 2. 双击点击commit所在的分支 3. 右键要合并的多个commit中的第一次提交的commit 4. 点击右键后弹出的菜单中的Interactively Rebase From Here选项 5. 点击测试二…

家政服务小程序,提高企业在市场中的竞争力

近几年&#xff0c;人们对家政的需求持续增加&#xff0c;面对小程序的快速发展&#xff0c;互联网家政的模式成为了市场新的发展方向&#xff0c;越来越多的居民也开始在线上预约家政服务。随着当下人们对家政的需求日益提升&#xff0c;线上家政小程序利用各种信息技术&#…

2024年华为OD机试真题-多段线数据压缩-C++-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集)​ 题目描述: 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多段线的走向只能是水平、竖直、斜向45度。 上图中的多段线可以用下面的坐标串表示:(2, 8), (3…

webgl_effects_stereo

ThreeJS 官方案例学习&#xff08;webgl_effects_stereo&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> import * as THREE from three; // 导入控制器 import { …

锐捷校园网自助服务系统 login_judge.jsf 任意文件读取漏洞复现(XVE-2024-2116)

0x01 产品简介 锐捷校园网自助服务系统是锐捷网络推出的一款面向学校和校园网络管理的解决方案。该系统旨在提供便捷的网络自助服务,使学生、教职员工和网络管理员能够更好地管理和利用校园网络资源。 0x02 漏洞概述 校园网自助服务系统/selfservice/selfservice/module/sc…

Linux Kernel nf_tables 本地权限提升漏洞(CVE-2024-1086)

文章目录 前言声明一、netfilter介绍二、漏洞成因三、漏洞危害四、影响范围五、漏洞复现六、修复方案临时解决方案升级修复方案 前言 2024年1月&#xff0c;各Linux发行版官方发布漏洞公告&#xff0c;修复了一个 netfilter:nf_tables 模块中的释放后重用漏洞&#xff08;CVE-…

企业数据挖掘建模平台极简建模流程

泰迪智能科技企业数据挖掘建模平台是企业自主研发&#xff0c;面向企业级用户的快速数据处理构建模型工具。平台底层算法基于R语言、Python、Spark等引擎&#xff0c;使用JAVA语言开发&#xff0c;采用 B/S 结构&#xff0c;用户无需下载客户端&#xff0c;可直接通过浏览器进…

Makefile:2:*** missing separator. Stop.

中文意思是说缺少分隔符。 解决办法如下 出现这种错误的原因: 在编辑makefile 时有些行没有前面没有按下tab键。举例&#xff1a;另外需要注意的是&#xff0c;如果你是使用vscode编辑&#xff0c;注意在vscode里面编辑的tab有可能也出现问题。建议使用vim编辑一下Makefile &a…

Word2021中的The Mathtype DLL cannot be found问题解决(office 16+mathtype7+非初次安装)

问题描述&#xff0c;我的问题发生在word中无法使用自定义功能区中的mathtype 我的环境是&#xff1a;W11Word2021mathtype7 因为我是第二次安装mathtype7&#xff0c;所以我怀疑是因为没有卸载干净&#xff0c;于是我参考了下面这篇文章的做法 参考文章 1.首先重新卸载当前的…

QT:QML中使用Loader加载界面

目录 一.介绍 二.实现 三.效果展示 四.代码 一.介绍 在QML中使用Loader加载界面&#xff0c;可以带来诸多好处&#xff0c;如提高应用程序的启动速度、动态地改变界面内容、根据条件加载不同的组件、更有效地使用内存以及帮助分割应用逻辑等。 1.延迟加载&#xff1a;QML…