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

1.接口测试概念及应用

                什么是接口

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

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

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

                        

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

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

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

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

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

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

                接口测试的意义                             

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

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

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

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

                

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

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

           核心请求四要素:

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

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

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

                 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.mzph.cn/bicheng/19490.shtml

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

相关文章

SpringMVC框架学习笔记(四):模型数据 以及 视图和视图解析器

1 模型数据处理-数据放入 request 说明&#xff1a;开发中, 控制器/处理器中获取的数据如何放入 request 域&#xff0c;然后在前端(VUE/JSP/...)取出显 示 1.1 方式 1: 通过 HttpServletRequest 放入 request 域 &#xff08;1&#xff09;前端发送请求 <h1>添加主人…

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循环神经网络RNN(GRU或LSTM)和 Transforme…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前&#xff0c;AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展&#xff0c;基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上&#xff0c;多个领域展现出了前所未有的能力。无论是自然语言处理、…

JavaScript的垃圾回收机制

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、垃圾…

匹配字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模块&#xff0c;用于实现正则表达式的操作。在实现时&#xff0c;可以使用re模块提供的方法&#xff08;如search()、match()、finda…

信息系统项目管理师0603:项目整合管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 文章目录 项目整合管理 — 考点总结(可直接理解记忆) 输入、输出、工具和技术 历年考题直接考输入,输出、工具和技术的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考题 项目章程是正…

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于Python的酒店客房入侵检测系统的设计与实现

基于Python的酒店客房入侵检测系统的设计与实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 酒店客房入侵管理界面 结合上文的结构搭建和用户需求&#xff0c;酒店客房入侵检测系统的…

【Unity Shader入门精要 第12章】屏幕后处理效果(一)

1. 原理和过程 屏幕后处理是绑定摄像机的&#xff0c;通过抓取当前摄像机渲染的图像作为 SrcTextrue&#xff0c;然后按需依次调用处理接口&#xff0c;对 SrcTexture 进行处理&#xff0c;最后将处理完成的 DstTexture 显示到屏幕上&#xff0c;整个过程的调度通过 C# 脚本完…

【机器学习】Adaboost: 强化弱学习器的自适应提升方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Adaboost: 强化弱学习器的自适应提升方法引言Adaboost基础概念弱学习器与强学习…

【蓝桥杯嵌入式】 第六届国赛

目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程&#xff0c;先配置资源 --- 勾选完选项一…

CCIG 2024:合合信息文档解析技术突破与应用前景

目录 背景当前大模型训练和应用面临的问题训练Token耗尽训练语料质量要求高LLM文档问答应用中文档解析不精准 合合信息的文档解析技术1. 具备多文档元素识别能力2. 具备版面分析能力3. 高性能的文档解析4. 高精准、高效率的文档解析文档多板式部分示例 文档解析典型技术难点元素…

案例|开发一个美业小程序,都有什么功能

随着移动互联网的迅猛发展&#xff0c;美业连锁机构纷纷寻求数字化转型&#xff0c;以小程序为载体&#xff0c;提升服务效率&#xff0c;增强客户体验。 线下店现在面临的困境&#xff1a; 客户到店排队时间过长&#xff0c;体验感受差 新客引流难&#xff0c;老用户回头客…

基于EV54Y39A PIC-IOT WA的手指数量检测功能开发(MPLAB+ADC)

目录 项目介绍硬件介绍项目设计开发环境及工程参考总体流程图硬件基本配置光照传感器读取定时器检测逻辑 功能展示项目总结 &#x1f449; 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指数量检测功能开发 &#x1f449; Github: EmbeddedCamerata/PIC-IOT_finger_recognition 项…

Flutter基础 -- Dart 语言 -- 注释函数表达式

目录 1. 注释 1.1 单行注释 1.2 多行注释 1.3 文档注释 2. 函数 2.1 定义 2.2 可选参数 2.3 可选参数 默认值 2.4 命名参数 默认值 2.5 函数内定义 2.6 Funcation 返回函数对象 2.7 匿名函数 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算术操作符 3.3 相等相关的…

上海亚商投顾:沪指冲高回落 两市成交金额仅剩7000亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日冲高回落&#xff0c;午后一度集体翻绿&#xff0c;临近尾盘小幅回升。光伏产业链再度走强&#…

aws 在ecs外部实例上运行gpu负载

参考资料 https://docs.amazonaws.cn/zh_cn/AmazonECS/latest/developerguide/ecs-gpu.htmlhttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/accelerated-computing-instances.html#gpu-instanceshttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/install-nvidia-drive…

LeetCode 63.不同路径Ⅱ

思路&#xff1a; 在有障碍物的地方增加一个判断即可 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int dp[105][105];int mobstacleGrid.size();int nobstacleGrid[0].size();for(int i0;i<m;i){for(int j0…

K8s集群之 存储卷 PV PVC

目录 默写 1 如何将pod创建在指定的Node节点上 2 污点的种类(在node上设置) 一 挂载存储​​​​​​​ 1 emptyDir存储卷 2 hostPath存储卷 ①在 node01 节点上创建挂载目录 ② 在 node02 节点上创建挂载目录 ③ 创建 Pod 资源 ④ 在master上检测一下&#xff1a;…

C++ vector 模拟实现

vector的底层也是一个动态数组&#xff0c;他与 string 的区别就是&#xff0c;string 是专门用来存储字符类数据的&#xff0c;为了兼容C语言&#xff0c;使用C语言的接口&#xff0c;在string的动态数组内都会都开一块空间用来存 \0 &#xff0c;而vector则不会。 首先我们要…