软件测试之接口测试,接口自动化测试, request
1. 接口测试
1.1 接口的概念
接口一般来说有两种:
- 程序内部的接口:方法与方法之间,模块与模块之间的交互
- 系统对外的接口:从别的网站或服务器获取资源或信息
1.2 接口测试
1.2.1 概念
接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
1.2.2 接口组成
接口文档应包含:
- 接口说明
- 调用url
- 请求方法(get/post)
- 请求参数、参数类型、请求参数说明
- 返回参数说明
1.3 接口测试重要性
必要性体现在:
- 可以发现很多在页面上操作发现不了的bug
- 检查系统的异常处理能力
- 检查系统的安全性、稳定性
- 前端随便变,接口测好了,后端不用变
1.4 接口用例的编写
- 通过性验证
- 参数组合测试
- 接口安全测试
- 异常验证
根据业务需求设计测试点,如登录失败次数限制、新用户发帖限制等。
2. 接口自动化测试
2.1 概念
通过对接口进行测试和模拟,确保软件系统内部各组件能正确通信和数据交换。
2.2 接口自动化流程
- 需求分析
- 挑选自动化接口
- 设计自动化测试用例
- 搭建自动化测试环境
- 设计自动化执行框架
- 编写代码
- 执行用例
- 生成测试报告
2.3 第一个简单的接口自动化
示例:对百度接口发起请求
import requests
r = requests.get("https://www.baidu.com")
print(r)
2.4 requests模块
2.4.1 安装
pip install requests==2.31.0
2.4.2 常见请求方法
# 发起get请求
requests.get(url, params=None, **kwargs)# 发起post请求
requests.post(url, data=None, json=None, **kwargs)# 通用请求方法
requests.request(method, url, **kwargs)
<>表示打印对象
2.4.3 添加请求信息
get() 、 post() 底层都是调用 request() 方法,因此这三个方法在发送请求时,传参无太大区别,可传递的参数展示如下:
- 参数传递方式的区别
-
params
- 用途:在URL中附加查询参数(Query Parameters)
- 典型场景:主要用于GET请求,但也可用于其他请求方法
- 示例:
requests.get(url, params={"key1": "value1"}) # 生成URL?key1=value1
-
json
- 用途:在请求体(Body)中以JSON格式传输数据
- 自动处理:设置
Content-Type: application/json
- 典型场景:POST/PUT请求的API交互
- 示例:
requests.post(url, json={"key": "value"}) # 自动序列化为JSON
若参数上传格式选择为 json 格式, Content-Type 会自动被设置为application/json
-
data
- 用途:在请求体(Body)中以表单形式传输数据
- 典型场景:传统表单提交或x-www-form-urlencoded格式
- 示例:
requests.post(url, data={"key": "value"}) # Content-Type: application/x-www-form-urlencoded
-
示例:
json返回 带有参数,可以拼接,也可以传params