如何做 python 接口测试?

前言

6000字带你了解,内容包括:

img
文末有惊喜

接口

概念

  • 接口就是:系统与系统之间,组件与组件之间,数据传递交互的通道。

img

文末有惊喜

接口的类型

  • 按协议划分:http、tcp、IP

  • 按语言划分:C++、java、php

  • 按范围划分:

    • 系统之间:

      • 多个内部系统之间
      • 内部系统与外部系统之间

img

    • 程序之间:

      • 方法与方法之间,函数与函数之间,模块与模块之间
# 接口
            def eat(something):
                print(f'小鸟在吃{something}')
            
            # 使用接口,传递数据
            def bird():
                eat('苹果')
            
            bird()

一、接口测试概念

  • 接口测试就是,对系统或组件之间的接口进行测试。校验传递的数据正确性和逻辑依赖关系的正确性!

原理

  • 接口测试,主要针对的测试目标 —— 服务器

  • 怎么测?

    • 模拟客户端,向服务器发送请求。
  • 用什么测?

    • 工具:fiddler、postman、jmter
    • 代码:python + UnitTest框架 + Requests框架
  • 测什么?

    • 测试 服务器针对客户端请求,回发的响应数据是否与预期结果一致!

      • 人眼对比
      • 断言

特点

  • 符合质量控制前移的理念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试低成本高效益
  • 接口测试是从用户的角度对系统进行检测

实现方式

  • 工具:JMeter、Postman、fiddler
  • 代码:Python + Requests + UnitTest

什么是自动化接口测试?

  • 借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断 预期结果和实际结果 是否一致!

二、HTTP协议

协议:就是规则。要求通信的双方必须严格遵守!

HTTP协议简介

  • HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
  • 特征:
  1. 支持客户端/服务器模式
  2. 简单快速
  3. 灵活
  4. 无连接
  5. 无状态

URL格式

  • 概念:(Uniform Resource Locator)统一资源定位符。
  • 作用:在网络环境中,唯一的定义一个数据资源。

img

  • 协议:http。 规定数据传输的方式。
  • 域名(IP):在网络环境中找到主机。—— 用 😕/ 与协议隔分
  • 端口(port):(常省略)在网络主机上,标识一个进程(应用程序)—— 用: 与域名
  • 资源路径:标识网络资源(文件、图片、音视频、变量…)—— 用: / 与端口格分
  • 查询参数:传递给资源路径对应的数据。—— 用 ? 与资源路径隔分。 查询参数内部 用 & 隔分多个kv对

练习

请写出以下URL的各个组成部分。这个URL没有写出端口号,它的端口是什么?

img

协议:http

域名:http://www.itcast.cn

端口号:8080( 不是默认,只不过网络 网络通信常用!)

资源路径:/news/index.html

查询参数:uid=123&page=1

HTTP请求

作用:

  • 客户端(app、浏览器),发送请求给服务器时,使用的协议 —— http请求协议。
  • 规定 发送给服务器的数据传输的语法格式。

整体格式

  • 请求行: http请求第一行。请求方法 (空格) URL (空格) 协议版本

  • 请求头: 语法格式:k :v

    • User-Agent:描述 请求发送端的 浏览器类型。
    • Content-Type:描述 请求体 的 数据类型!
  • 空行: 代表http请求头结束。

  • 请求体: 请求发送时携带的数据。数据类型 Content-Type 的值!

    • post 和 put 有请求体
    • get 和 delete 没有请求体

img

img

fiddler 抓包验证

img

img

请求行

  • http 请求方法:大小写均可。

    • GET:查询。 —— 没有请求体
    • POST:添加。(登录时常用)
    • put: 修改。
    • delete: 删除。 —— 没有请求体

请求头

  • 数据格式:k:v

  • Content-Type:

    • application/json: JSON数据格式
    • application/x-www-form-urlencoded: form表单数据

请求体

  • GET和DELETE 没有
  • PUT 和POST有
  • 数据类型受 Content-Type 值影响。

练习

  • 以下是抓取的某个HTTP协议数据包的请求报文,请问其中,请求行,请求头,请求体分别是什么?
POST http://tpshop-test.itheima.net/index.php HTTP/1.1
Host: tpshop-test.itheima.net
Connection: keep-alive
Content-Length: 53
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://tpshop-test.itheima.net
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90
Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://tpshop-test.itheima.net/Home/user/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: is_mobile=0; province_id=1; city_id=2; district_id=3;
is_distribut=1; PHPSESSID=1b80tii77mhle0fqd2bg52ucg5; cn=0

username=13800138006&password=123456&verify_code=8888

HTTP响应

作用:

  • 服务器端,针对客户端发送的 http请求,回发响应数据。—— http应答!
  • 规定 回发给客户端的数据组织格式。

整体格式

  • 响应行(状态行):协议版本 (空格) 状态码 (空格) 状态描述

  • 响应头:语法格式:k:v

    • Content-Type: 描述 响应体中数据类型。
  • 空行:代表响应头结束

  • 响应体:绝大多数不为空。(请求成功:回发数据,失败:回发错误信息)

    • 数据类型受 Content-Type值影响。

img

img

状态行

  • 状态码:

    • 1xx:代表指示信息。表请求已经被接收,等待继续处理。
    • 2xx:代表请求成功被处理、接收。 常见:200、201
    • 3xx:重定向,待访问的资源,需求重新指定路径访问。
    • 4xx:代表客户端错误。常见:404、 403
    • 5xx:访问器端错误。
  • 状态码描述:一般与状态码 唯一对应。 200 —— ok; 404 —— file not found

响应头

  • 语法格式:k:v
  • Content-Type:值为 响应体 的数据类型。
  • Content-Length: 响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确!

响应体

  • 回发给客户端的 消息内容。常见的有 html网页、xml、json

练习

  • 以下是HTTP协议的响应报文内容,请问,状态行、响应头、响应体分别是哪几个部分?
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 29 Jun 2020 03:36:28 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.6.40
Set-Cookie: is_mobile=0; expires=Mon, 29-Jun-2020 04:36:28 GMT;
Max-Age=3600; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-
check=0, pre-check=0
Pragma: no-cache
Set-Cookie: user_id=3338; path=/
Set-Cookie: is_distribut=1; path=/
Set-Cookie: uname=13800138006; path=/
Set-Cookie: cn=0; expires=Mon, 29-Jun-2020 02:36:28 GMT; Max-
Age=-3600; path=/
Content-Length: 805

{"status":1,"msg":"\u767b\u9646\u6210\u529f","result":
{"user_id":3338,"email":"","password":"519475228fe35ad067744465
c42a19b2","paypwd":null,"sex":0,"birthday":0,"user_money":"0.00
","frozen_money":"0.00","distribut_money":"0.00","underling_num
ber":0,"pay_points":100,"address_id":0,"reg_time":1590980161,"l
ast_login":1590980161,"last_ip":"","qq":"","mobile":"1380013800
6","mobile_validated":1,"oauth":"","openid":null,"unionid":null
,"head_pic":null,"province":0,"city":0,"district":0,"email_vali
dated":0,"nickname":"13800138006","level":1,"discount":"1.00","
total_amount":"0.00","is_lock":0,"is_distribut":1,"first_leader
":0,"second_leader":0,"third_leader":0,"token":"a26e177bd6506ff
f68c01fd13e742073","message_mask":63,"push_id":"0","distribut_l
evel":0,"level_name":"\u6ce8\u518c\u4f1a\u5458"},"url":""}

传统风格接口

特点:

  • 请求方法,只使用 get 和 post 即可。
  • URL 不唯一。同一个操作可以对应不同的 URL
  • 状态码的使用较单一。200 最常见。

img

RESTful风格接口

特点:

  1. 每一个URL代表一种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现层;
  • 表现层:数据的不同表现形式(如:图片、文字表现同一个数据对象)
  1. 客户端通过四个HTTP动词(GET、post、delete、put),对服务器端资源进行操作,实现"表现层状态转化";
  2. 接口之间传递的数据最常用格式为JSON。

img

三、接口测试流程

img

  1. 分析需求,产生需求文档(产品)。
  2. (开发产生接口文档)解析接口文档。
  3. 产生 接口测试用例(送审)。
  4. 执行 测试用例
  • 工具:postman、jmeter、fidller
  • 代码:python + Requests +UnitTest
  1. 提交、跟踪缺陷。
  2. 生成 测试报告。
  3. (可选)接口自动化持续集成!

四、接口文档

什么是接口文档

  • 由开发人员编写,描述接口信息的文档。 开发团队按接口文档进行开发工作,并要一直维护遵守。

作用

  1. 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
  2. 项目迭代或者项目人员更迭时,方便后期人员查看和维护
  3. 方便测试人员进行接口测试

展现形式

  • word 文档形式
  • Excel 表格式形式
  • pdf 文档形式。

结构

  • 基本信息:

    • 资源路径 (协议和域名在 “系统信息”中)
    • 请求方法
    • 接口描述
  • 请求参数:

    • 请求头:

      • Content-Type。描述请求体的数据类型!
    • 请求体:

      • 实现该接口使用的 数据及对应类型。
  • 返回数据:

    • 状态码 200

    • 错误码(自定义状态码)

      • 码值
      • 描述信息。

接口文档解析

  • 接口文档的解析本质:从接口文档中,找出 http 请求所需要的 数据信息。

    • 主要包含:请求方法、URL 、请求头、请求体、响应状态码、描述。
  • 以 “登录” 为例:

    • 请求方法:POST

    • URL:http://ihrm-test.itheima.net/api/sys/login

    • 请求头:Content-Type :application/json

    • 请求体:{“mobile”:”13800000002”, “password”:”123456”}

    • 响应状态码:200

      • 错误码:

        • 10000:操作成功!
        • 20001:用户名或密码错误
        • 99999:抱歉,系统繁忙,请稍后重试!

img

img

最后给大家介绍一个完整的python学习路线,内容是从入门到进阶,既有思维导图,也有经典书籍,还有配套视频,给那些想学习python的小伙伴们一点帮助!

一、Python入门

下面这些内容是Python各个应用方向都必备的基础知识,想做爬虫、数据分析或者人工智能,都得先学会他们。任何高大上的东西,都是建立在原始的基础之上。打好基础,未来的路会走得更稳重。

包含:

计算机基础

在这里插入图片描述

python基础

在这里插入图片描述

Python入门视频600集:

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

二、Python爬虫

爬虫作为一个热门的方向,不管是在自己兼职还是当成辅助技能提高工作效率,都是很不错的选择。

通过爬虫技术可以将相关的内容收集起来,分析删选后得到我们真正需要的信息。

这个信息收集分析整合的工作,可应用的范畴非常的广泛,无论是生活服务、出行旅行、金融投资、各类制造业的产品市场需求等等,都能够借助爬虫技术获取更精准有效的信息加以利用。

在这里插入图片描述

Python爬虫视频资料

在这里插入图片描述

三、数据分析

清华大学经管学院发布的《中国经济的数字化转型:人才与就业》报告显示,2025年,数据分析人才缺口预计将达230万。

这么大的人才缺口,数据分析俨然是一片广阔的蓝海!起薪10K真的是家常便饭。

在这里插入图片描述

四、数据库与ETL数仓

企业需要定期将冷数据从业务数据库中转移出来存储到一个专门存放历史数据的仓库里面,各部门可以根据自身业务特性对外提供统一的数据服务,这个仓库就是数据仓库。

传统的数据仓库集成处理架构是ETL,利用ETL平台的能力,E=从源数据库抽取数据,L=将数据清洗(不符合规则的数据)、转化(对表按照业务需求进行不同维度、不同颗粒度、不同业务规则计算进行统计),T=将加工好的表以增量、全量、不同时间加载到数据仓库。

在这里插入图片描述

五、机器学习

机器学习就是对计算机一部分数据进行学习,然后对另外一些数据进行预测与判断。

机器学习的核心是“使用算法解析数据,从中学习,然后对新数据做出决定或预测”。也就是说计算机利用以获取的数据得出某一模型,然后利用此模型进行预测的一种方法,这个过程跟人的学习过程有些类似,比如人获取一定的经验,可以对新问题进行预测。

在这里插入图片描述

机器学习资料:

在这里插入图片描述

六、Python高级进阶

从基础的语法内容,到非常多深入的进阶知识点,了解编程语言设计,学完这里基本就了解了python入门到进阶的所有的知识点。

在这里插入图片描述

到这就基本就可以达到企业的用人要求了,如果大家还不知道去去哪找面试资料和简历模板,我这里也为大家整理了一份,真的可以说是保姆及的系统学习路线了。

在这里插入图片描述
但学习编程并不是一蹴而就,而是需要长期的坚持和训练。整理这份学习路线,是希望和大家共同进步,我自己也能去回顾一些技术点。不管是编程新手,还是需要进阶的有一定经验的程序员,我相信都可以从中有所收获。

一蹴而就,而是需要长期的坚持和训练。整理这份学习路线,是希望和大家共同进步,我自己也能去回顾一些技术点。不管是编程新手,还是需要进阶的有一定经验的程序员,我相信都可以从中有所收获。

资料领取

这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以点击下方CSDN官方认证微信卡片免费领取 ↓↓↓【保证100%免费】

在这里插入图片描述

好文推荐

了解python的前景:https://blog.csdn.net/SpringJavaMyBatis/article/details/127194835

了解python的兼职副业:https://blog.csdn.net/SpringJavaMyBatis/article/details/127196603

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值