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

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包

   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源网关Apache APISIX启用JWT身份验证

说明: 本文APISIX的配置参考我之前写的《Ubuntu部署Apache APISIX》 创建最小API 首先,确保你已经安装了.NET 6 SDK。创建文件夹“MinimalApiDemo”,VS Code打开文件夹,打开终端 dotnet new web -o MinimalApiDemo cd Minimal…

AGP8+ android.useNewApkCreator‘ is deprecated 打包失败

问题 新建一个项目,默认使用最新版的 AGP 和 Gradle,打包构建立马失败! 错误日志 Caused by: com.android.builder.errors.EvalIssueException: The option android.useNewApkCreator is deprecated. An exception occurred applying plu…

gitee上传整个项目文件夹

1.访问git官网并下载 Git 如下图: 点击download,然后选择合适的版本进行下载: 如下图,我下载的是2.32.0.2版本,64位windows版。 下载完之后,直接点击安装。 然后根据向导,一路默认到安装完成。…

数据虚拟化:零数据搬运,实现全域数据的集成和自适应加速

数据虚拟化技术的兴起,与传统数据仓库体系的弊端日益显现有着密切关系。 过去,企业通常会构建数据仓库来存储与加工结构化数据。数据仓库虽然实现了数据的物理集中存储,但过于依赖大量的 ETL 工程师来支持数据的集成、准备、开发与管理。随着…

Docker高级篇之安装Redis集群(分布式存储案例)

文章目录 1. 案例场景2. 3主3从redis集群扩缩容配置案例架构说明3. 3主3从redis集群扩缩容配置案例搭建4. 主从容错切换迁移案例5. 主从扩容6. 主从缩容 1. 案例场景 1~2亿条数据需要缓存,如何设计这个存储案例?这种情况下单机存储100%是不可…

【kubernetes】k8s集群安全机制 保姆级攻略哦

目录 一、认证(Authentication) 1.1三种认证方式 1.2需要被认证的访问类型: 1.3安全性说明: 1.4证书颁发: 1.5kubeconfig 1.6Service Account 1.7Secret 与 SA 的关系 1.7.1Kubernetes 设计了一种资源对象叫做…

Qt Creator常用的快捷键和常用功能

常用快捷键 新建项目,ctrl n 运行项目,ctrl r 构建项目,ctrl b 改变编辑器界面字体显示比例大小,ctrl 鼠标滚轮 对齐代码,ctrl a; ctrl i 跳转到上一行,ctrl shift enter 跳转到下一行,…

sc.tl.rank_genes_groups()问题

今天被问到了一个关于sc.tl.rank_genes_groups()的奇怪的问题 import scanpy as sc import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # from CellDART import da_cellfraction # from CellDART.utils import random_mix from…

Linux网络服务之SSH(远程访问及控制)

ssh远程管理: ssh是一种安全通道协议,用来实现字符界面的远程登录。远程复制,远程文本传输。 ssh对通信双方的数据进行了加密 用户名和密码登录 密钥对认证方式(可以实现免密登录) ssh 22 网络层 传输层 数据传输…

制造执行MES系统在光伏行业的应用

全球对可再生能源的需求不断增长,光伏能源作为一种清洁、可持续的能源形式,已经在广泛应用中受到了广泛关注。为满足工业领域的光伏能源需求,光伏制造执行系统(MES)作为一种集成化的技术解决方案,提供了更高效、更可靠的解决方案。…

代码随想录算法训练营第四十六 | ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

139.单词拆分 视频讲解&#xff1a;https://www.bilibili.com/video/BV1pd4y147Rh https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<st…

Apache POI(使用Java读写Excel表格数据)

1.Apache POI简介 Apache POI是一个开源的Java库&#xff0c;用于操作Microsoft Office格式的文件。它支持各种Office文档的读写功能&#xff0c;包括Word文档、Excel电子表格、PowerPoint演示文稿、Outlook电子邮件等。Apache POI提供了一组API&#xff0c;使得Java开发者能够…

【Mybatis】动态SQL标签2

choose (when, otherwise)标签是使用举例 类似switch...case&#xff0c;从上到下匹配&#xff0c;找到匹配的条件&#xff0c;就结束匹配其他的&#xff01; set标签是使用举例 set这个标签是用在更新操作上的 set标签代替sql中的set关键字&#xff0c;可以把set语句后多余的…

【精选案例】Sellfy | 电子商务平台怎么利用客户裂变系统实现用户增长?

Sellfy是一种基于云的电子商务解决方案&#xff0c;特别为数字内容创作者所设计。 一、主要目标用户&#xff1a; Sellfy主要针对的是包括作家、插画家、设计师、音乐家和电影制作人在内的数字内容创作者&#xff0c;他们可以在Sellfy上在线销售自己的产品。 二、平台特点&a…

商淘云电商分账系统如何为企业降低连锁财务成本

当今激烈的市场竞争中&#xff0c;连锁品牌企业面临着多样化的挑战&#xff0c;其中财务管理尤为关键。商淘云连锁收银系统作为一款专为连锁品牌量身定制的解决方案&#xff0c;不仅可以帮助企业实现总部入账管控财务、银行结算规范财务的目标&#xff0c;还能通过分账系统优化…

Django里的ModelForm组件

ModelForm组件 自动生成HTML标签 自动读取关联数据表单验证 错误提示数据库进行&#xff1a;新建&#xff0c;修改 步骤如下&#xff1a; 创建类 # 在 views.py 文件里# 创建一个类 class AssetModelForm(forms.ModelForm):class Meta:model models.AssetSet #fields [n…

IDEA完整卸载和破解安装

1、完全卸载IDEA 1.卸载 2、清理注册表 windows R 输入 regedit 打开注册表 3、系统文件清理 C:\用户\${用户名称}\IdeaProjects\ # 如果你想删除 IDEA 相关&#xff0c;则只需要删除 JetBrains 目录下包含 IDEA 的文件夹即可 C:\用户\${用户名称}\AppData\Roaming\JetBra…

NPDP|智造业产品经理的战略智慧与行动之道

在智能制造风起云涌的时代&#xff0c;智造业产品经理的角色愈发重要。他们不仅需要具备深厚的行业知识&#xff0c;更要拥有前瞻的战略眼光和高效的行动能力。那么&#xff0c;智造业产品经理如何进行战略思考与行动呢&#xff1f;本文将为您揭示其中的奥秘。 洞察市场趋势&am…

File类操作文件方法详解及其简单应用

一、File 类介绍 Java 中的 File 类是 java.io 包的一部分&#xff0c;它提供了操作文件和目录的能力。File 类可以用来表示文件系统中的文件或目录。 二、路径 在讲File用法之前咱们先介绍一下路径是什么&#xff1f; 在计算机中&#xff0c;路径&#xff08;Path&#xff0…

Python中__init__.py文件的作用

作用 在Python中,__init__.py 文件有几个重要的作用,主要与包的管理和模块的导入相关。具体来说,它有以下几个功能: 标识包: __init__.py 文件存在的主要目的是标识包含它的目录是一个Python包。没有这个文件,Python解释器不会将该目录视为包的一部分。因此,即使文件夹中…