【接口自动化测试 -- 第一部分】

仅用作个人了解记录!

1. 接口测试基础

接口定义 HTTP协议  接口规范
接口测试流程 API文档解读 接口用例设计

1.1 URL

URL = 协议 + 服务器地址 + 端口号 + 资源路径 + 参数
【接口自动化测试 -- 第一部分】_第1张图片

1.2 HTTP协议

  1. HTTP协议组成:
  • 请求: 行,头,体
  • 响应: 状态行,响应头,响应体
  1. 常见请求方法 : 查询GET 新增POST 修改PUT 删除DELETE
  2. 常见响应状态码
  • 2XX : 请求成功,如200 201 204==
  • 4XX : 客户端错误,如400 401 403 404==
  • 5XX : 服务端错误,如500 503==

【接口自动化测试 -- 第一部分】_第2张图片
【接口自动化测试 -- 第一部分】_第3张图片
【接口自动化测试 -- 第一部分】_第4张图片
【接口自动化测试 -- 第一部分】_第5张图片
【接口自动化测试 -- 第一部分】_第6张图片
【接口自动化测试 -- 第一部分】_第7张图片
【接口自动化测试 -- 第一部分】_第8张图片

1.3 接口规范

分类 传统风格 RESTful
请求方法 主要使用Post Get方法 遵循HTTP协议方法定义
URL 定义资源和操作混合 仅定义一个资源,不包含对资源的操作
状态码 均是200 遵循HTTP协议状态码定义
  1. 传统接口风格

【接口自动化测试 -- 第一部分】_第9张图片

  1. Restful

【接口自动化测试 -- 第一部分】_第10张图片

2. 工具实现接口测试

Postman 接口调试 断言 自动关联

  1. 拿到接口项目,先测试业务接口,然后再考虑单个接口
  2. 如何测试业务接口
    1. 根据业务流程图梳理业务路径
    2. 设计测试用例覆盖每一条业务路径
  3. 如何解析接口文档
    1. 分析接口间依赖关系
    2. 分析接口请求(比如 : URL 请求方法 请求头 请求参数类型 请求参数==)
    3. 分析接口响应 (比如 : 响应状态码 响应数据==)

举例: 提取测试点 --> 找业务路径
【接口自动化测试 -- 第一部分】_第11张图片

解析接口文档
测试用例设计
【接口自动化测试 -- 第一部分】_第12张图片
编写测试用例

POSTMAN介绍

下载地址 : https://www.getpostman.com/ postman下载链接地址
如何使用postman发请求并看响应结果
设置请求方法 -> 设置URL -> 设置请求头 -> 设置请求数据 -> 点Send发请求->看响应状态码 -> 看响应体数据

如何使用postman发请求 multipart/form-data 并看响应结果
设置请求方法 -> 设置URL -> 设置请求头 -> 设置请求数据**[body->form-data->file选择上传文件] **-> 点Send发请求->看响应状态码 -> 看响应体数据
【接口自动化测试 -- 第一部分】_第13张图片
【接口自动化测试 -- 第一部分】_第14张图片
【接口自动化测试 -- 第一部分】_第15张图片

POSTMAN自动关联数据

Postman自动关联解决了** 接口间需要自动传递数据;**
Postman自动关联实现思路:
①提取关联数据 pm.response.json()
②保存关联数据 pm.environment.set()
③引用关联数据 {{变量名}}
【接口自动化测试 -- 第一部分】_第16张图片
【接口自动化测试 -- 第一部分】_第17张图片
【接口自动化测试 -- 第一部分】_第18张图片
【接口自动化测试 -- 第一部分】_第19张图片
举例
【接口自动化测试 -- 第一部分】_第20张图片
Postman 如何提交查询参数

  1. 设置在URL
  2. 设置Params区域

批量执行

通过运行测试集的方式批量运行测试用例

  1. 点击测试集中的"run"按钮,批量运行测试用例
  2. 弹出Collection Runner窗口,点击运行按钮
  3. 查看测试结果

【接口自动化测试 -- 第一部分】_第21张图片

单接口测试

正向 : 必填参数 全部参数
逆向 : 空 类型错误 长度错误 规则不符

【接口自动化测试 -- 第一部分】_第22张图片
提取测试点
【接口自动化测试 -- 第一部分】_第23张图片
测试用例
【接口自动化测试 -- 第一部分】_第24张图片
postman进行接口测试
【接口自动化测试 -- 第一部分】_第25张图片

Postman断言

断言作用 : 让工具代替人工自动判断预期结果和实际结果是否一致
常见断言方式有 :

  • 响应状态码
  • 包含字符串
  • JSON数据断言

【接口自动化测试 -- 第一部分】_第26张图片

Postman参数化

场景: 测试脚本仅测试数据不一样,使用参数化提高脚本复用
步骤:
【接口自动化测试 -- 第一部分】_第27张图片
如何实现参数化

  1. 准备数据文件
  2. 引用数据文件
    1. 请求参数获取 {{变量名}}
    2. 代码中获取 data.变量名

3. 代码实现接口自动化测试

Pyhton Requests Pytest Allure 和接口测试框架
【接口自动化测试 -- 第一部分】_第28张图片

接口自动化测试

接口自动化 : 使用工具或代码代替人对接口进行测试的技术
测试目的 : 防止开发修改代码时候引入新问题

测试时机 :

  • 开发进行系统测试 转测前, 可先进行接口自动化脚本编写;
  • 开发进行系统测试 转测后, 优先进行系统测试用例执行,再进行接口自动化脚本编写(为后续回归测做准备)

【接口自动化测试 -- 第一部分】_第29张图片
【接口自动化测试 -- 第一部分】_第30张图片

接口自动化框架

【接口自动化测试 -- 第一部分】_第31张图片

项目目录结构

【接口自动化测试 -- 第一部分】_第32张图片

Requests库

python 中的"浏览器",基于urllib的HTTP库

// 安装
pip3 install requests

    // 验证
    pip3 show requests

    //操作步骤
    // 1 导包
    // 2 发送接口请求
    // 3 查看响应数据

【接口自动化测试 -- 第一部分】_第33张图片
【接口自动化测试 -- 第一部分】_第34张图片
【接口自动化测试 -- 第一部分】_第35张图片

// 需求 登录

//导包
import requests

//发送请求
url = "http://test.itkaka.net/api/login"
    header_data = {"Content-Type":"application/json"}
login_data = {
    "uname" : "admin",
"pwd":"admin123",
    "code":2,
    "uuid":"xxx"
}
response = requests.post(url=url,headers= header_data,json=login_data)

    //查看响应
    print(response.status_code)
    print(response.json())
封装接口对象层
// 接口封装时,重点是依据接口文档封装接口信息,需使用的测试数据是从测试用例传递,接口
//方法被调用时需要返回对应的响应结果

// 导包
import requests

//创建接口类
class LoginAPI:
	// 初始化
	def _ _ init _ _(self):
                     // 指定url基本信息
self.url_verify = ""
    self.url_login=""

    //验证码
    def get_verify_code(self):
    return requests.get(url=self.url_verify)

    // 登录
    def login(self,test_data):
    return requests.post(url=self.url_login,json=test_data)
    

【接口自动化测试 -- 第一部分】_第36张图片
【接口自动化测试 -- 第一部分】_第37张图片
【接口自动化测试 -- 第一部分】_第38张图片
【接口自动化测试 -- 第一部分】_第39张图片

封装接口测试脚本层

测试数据准备,断言以及业务处理==
【接口自动化测试 -- 第一部分】_第40张图片

项目配置文件

【接口自动化测试 -- 第一部分】_第41张图片
:::info
接口自动化框架中配置文件的主要作用是 : 维护项目相关基本信息,比如URL和项目路径=
:::

Allure报告

官方帮助文档 : https://docs.qameta.io/allure
【接口自动化测试 -- 第一部分】_第42张图片

// 生成测试结果文件
//安装
pip install allure-pytest


// 使用 allure 生成测试报告的步骤
    // 1. 修改 pytest.ini 配置文件
    [pytest]
    addopts = s --alluredir report
    testpaths = ./scripts
    python_files = test*.py
    python_classes = Test*
    python_functions = Test*

    // 2. 运行pytest 命令产生测试结果文件(json文件)
    pytest

    // 3. 运行allure 命令生成测试报告
    allure serve report

【接口自动化测试 -- 第一部分】_第43张图片
【接口自动化测试 -- 第一部分】_第44张图片

持续集成 CI/CD(待补充)

Jenkins Git GitHub

进阶(待补充)

PyMysql操作数据库
Mock测试 接口加密解密测试

你可能感兴趣的:(Test,单元测试,测试用例)