【接口自动化】Request学习笔记

张开发
2026/4/10 10:48:36 15 分钟阅读

分享文章

【接口自动化】Request学习笔记
目标• Requests 概述• Requests 基础用法• Requests 实用技巧• Requests 接口自动化实践总结Request概述为什么用Request?生活化比喻没有 requests如同没有外卖员一切需亲力而为。自己去餐厅服务器​ 自己点餐构造请求 ​自己等厨师做菜服务器处理 ​自己打包带走获取响应有 requests 的情况有外卖员告诉外卖员你要什么外卖员帮你做放到家门口1. 告诉外卖员要什么requests.get/post​ 2. 外卖员帮你搞定一切​ 3. 送到家门口返回数据​ 4 # 简单方便代码真实场景测试电商网站接口没有 Requests 的情况# 你要手动测试用户登录接口​ 1. 打开 Postman​ 2. 输入 URL: http://shop-xo.hctestedu.com/login​ 3. 设置请求方法: POST​ 4. 填写请求体: {username: test, password: 123456}​ 5. 点击发送​ 6. 眼睛看响应结果​ 7. 手动记录测试结果​ # 每次测试都要重复这些步骤太麻烦了有 Requests 的情况# 自动化测试用户登录接口​ import requests​ ​ def test_login():​ # 一键运行自动完成所有步骤​ response requests.post(​ http://shop-xo.hctestedu.com/login,​ json{username: test, password: 123456}​ )​ # 自动检查结果​ assert response.status_code 200​ assert response.json()[success] True​ print(✅ 登录测试通过)​ # 运行测试​ test_login()批量测试requests配合pytest能进行批量测试import requests from jsonpath import jsonpath class TestCase: # 登录 def test_login(self): global token url http://shop-xo.hctestedu.com/index.php?s/api/user/login data { accounts: youyi, pwd: 123456, type: username } res requests.post(url, datadata) token jsonpath(res.json(), $..token)[0] exmsg 登录成功 sjmsg res.json()[msg] assert sjmsg exmsg # 购物车接口 def test_cart(self): url fhttp://shop-xo.hctestedu.com/index.php?s/api/cart/add data {goods_id: 2, stock: 3} # 补充请求头携带登录获取的token原代码缺失已补全 headers {token: token} res requests.post(url, jsondata, headersheaders) print(购物车返回的结果, res.json()) exmsj 加入成功 sjmsg res.json()[msg] assert sjmsg exmsj工具手动测试1个测试员 → 1小时 → 测试10个接口​Requests自动化1个脚本 → 10秒钟 → 测试100个接口什么是requests?​一句话解释requests 是 Python 中用来发送接口请求的做接口自动化测试必须要用它request 安装pip install requestsRequests基础语法GET - 获取数据查看import requests # 浏览网页 url http://novel.hctestedu.com/book/qu # try: response requests.get(url, timeout10) response.raise_for_status() # 检查请求是否成功 print(response.json()) # 查看返回的数据 except requests.exceptions.RequestException as e: print(f请求发生错误: {e})POST - 提交数据新增import requests # 模拟表单提交登录数据 data { username: 15574113907, password: 123456 } # 发送POST登录请求 response requests.post(http://novel.hctestedu.com/user/login, datadata) # 打印登录接口返回结果 print(response.json())PUT - 更新数据修改import requests # 模拟修改密码接口请求 data { oldPassword: 123456, # 旧密码 newPassword1: 234567, # 新密码 newPassword2: 234567, # 确认密码 Authorization: xxxxx # 对应用户的token鉴权用 } # 发送PUT请求修改密码 response requests.put( http://novel.hctestedu.com/user/updatePassword, jsondata ) # 打印接口返回结果 print(response.json())DELETE - 删除数据删除import requests # 模拟删除作家接口请求 # 定义要删除的作家ID author_id 1 # 可根据实际需求修改ID # 发送DELETE请求删除指定作家 response requests.delete(fhttp://novel.hctestedu.com/author/deleteIndex/{author_id}) # 打印接口返回结果 print(response.json())Requests常用技巧1.添加请求头import requests # 定义请求头包含内容类型、身份认证、客户端标识 headers { Content-Type: application/json, # 指定请求体为JSON格式 Authorization: Bearer your_token, # Bearer鉴权替换为实际token User-Agent: MyApp/1.0 # 客户端标识模拟应用版本 } # 发送带请求头的GET请求 # url 需提前定义为目标接口地址例如url http://example.com/api/data response requests.get(url, headersheaders) # 打印接口返回结果 print(response.json())2.传递参数import requests # -------------------------- # 1. URL 参数?page1size10 # -------------------------- # 定义URL查询参数用于分页查询 params { page: 1, # 页码第1页 size: 10 # 每页条数10条 } # 发送带URL参数的GET请求 # requests会自动将params拼接到URL后最终请求地址为https://api.example.com/users?page1size10 response requests.get(https://api.example.com/users, paramsparams) # 打印接口返回结果 print(response.json()) # -------------------------- # 2. 请求体数据表单/JSON格式 # -------------------------- # 表单格式application/x-www-form-urlencoded data { name: John } # JSON格式application/json json_data { name: John } # 表单格式POST请求示例 # response_form requests.post(https://api.example.com/users, datadata) # JSON格式POST请求示例 # response_json requests.post(https://api.example.com/users, jsonjson_data)3.处理响应import requests # 发送GET请求获取响应 # url 需提前定义为目标接口地址例如url https://api.example.com/users response requests.get(url) # 打印响应状态码200成功、404未找到、500服务器错误等 print(response.status_code) # 打印原始响应文本字符串格式 print(response.text) # 解析并打印JSON格式响应适用于返回JSON数据的接口 print(response.json()) # 打印响应头信息包含服务器、内容类型等元数据 print(response.headers)4.错误处理import requests # 目标接口地址需提前定义 # url https://api.example.com/users try: # 发送GET请求设置5秒超时 response requests.get(url, timeout5) # 自动检查状态码非200系列如404、500会直接抛出异常 response.raise_for_status() # 请求成功时的处理示例 print(请求成功) print(response.json()) except requests.exceptions.Timeout: # 捕获超时异常 print(请求超时) except requests.exceptions.RequestException as e: # 捕获其他所有请求异常网络错误、状态码异常等 print(f请求失败{e})Requests接口自动化总结功能测试vs接口自动化手动测试# 手工接口测试流程传统方式1. 打开Postman工具2. 输入接口URL、请求参数3. 点击「发送」按钮发起请求4. 人工查看接口响应结果5. 手动记录测试结果# 核心问题重复机械劳动效率低且易出错自动化测试# 接口自动化测试流程自动化方式1. 编写一次自动化测试代码2. 一键批量执行所有接口测试用例3. 程序自动校验接口响应结果4. 自动生成标准化测试报告# 核心优势高效、准确、可重复执行

更多文章