Python+Requests:搭建基础接口自动化测试框架

Python+Requests:搭建基础接口自动化测试框架

在接口自动化测试领域,Python 结合 Requests 库是一种非常流行且高效的组合。今天,我们就一起利用这两者来搭建一个基础的接口自动化测试框架。这个框架将包含用例管理、请求发送以及结果断言等重要功能,帮助你开启接口自动化测试的大门。

核心技术点

Requests 库使用

Requests 库是 Python 中一个强大且易用的 HTTP 库,它可以让你方便地发送各种 HTTP 请求,如 GET、POST、PUT、DELETE 等。在接口自动化测试中,我们主要用它来模拟客户端向服务器发送请求,并获取响应结果。

  • 安装 Requests 库
    首先,你需要安装 Requests 库。可以使用 pip 命令进行安装,打开命令行工具,输入以下命令:
pip install requests 

这就好比你为自己的测试工具箱添加了一个新的工具,有了它,你就能更轻松地完成接口测试的任务。

  • 发送 GET 请求
    下面是一个简单的发送 GET 请求的示例代码:
import requests # 发送 GET 请求 response = requests.get('https://api.example.com/data')# 打印响应状态码print(response.status_code)# 打印响应内容print(response.text)

在这段代码中,我们使用 requests.get() 方法发送了一个 GET 请求到指定的 URL。response.status_code 可以获取响应的状态码,比如 200 表示请求成功,404 表示请求的资源不存在。response.text 则可以获取响应的文本内容。

  • 发送 POST 请求
    如果需要发送 POST 请求,可以使用 requests.post() 方法,示例代码如下:
import requests # 定义请求数据 data ={'key1':'value1','key2':'value2'}# 发送 POST 请求 response = requests.post('https://api.example.com/submit', data=data)# 打印响应状态码print(response.status_code)# 打印响应内容print(response.text)

这里我们定义了一个字典 data 作为请求的数据,然后使用 requests.post() 方法将数据发送到指定的 URL。

框架基础结构设计

一个基础的接口自动化测试框架通常包含用例管理、请求发送和结果断言等模块。下面我们来详细设计这个框架的基础结构。

  • 用例管理模块
    用例管理模块主要负责管理测试用例,包括用例的添加、执行和结果记录。我们可以使用 Python 的类来实现这个模块。示例代码如下:
classTestCaseManager:def__init__(self): self.test_cases =[]defadd_test_case(self, test_case): self.test_cases.append(test_case)defrun_test_cases(self):for test_case in self.test_cases: test_case.run()

在这个类中,__init__ 方法初始化了一个空的测试用例列表 self.test_casesadd_test_case 方法用于向列表中添加测试用例,而 run_test_cases 方法则遍历列表,依次执行每个测试用例。

  • 请求发送模块
    请求发送模块负责使用 Requests 库发送 HTTP 请求。我们可以将请求发送的逻辑封装在一个类中,示例代码如下:
import requests classRequestSender:defsend_request(self, method, url, data=None):if method =='GET': response = requests.get(url)elif method =='POST': response = requests.post(url, data=data)return response 

在这个类中,send_request 方法根据传入的请求方法(GET 或 POST)和 URL 发送相应的请求,并返回响应结果。

  • 结果断言模块
    结果断言模块用于验证接口的响应结果是否符合预期。我们可以使用 Python 的 assert 语句来实现简单的断言。示例代码如下:
classAssertion:defassert_status_code(self, response, expected_status_code):assert response.status_code == expected_status_code,f"Expected status code {expected_status_code}, but got {response.status_code}"

在这个类中,assert_status_code 方法接收响应对象和预期的状态码作为参数,使用 assert 语句进行断言。如果实际状态码与预期状态码不相等,会抛出一个异常并输出错误信息。

实操模块:逐步搭建基础框架

现在,我们将上述模块组合起来,逐步搭建一个完整的基础接口自动化测试框架。

完整代码示例
import requests # 请求发送模块classRequestSender:defsend_request(self, method, url, data=None):if method =='GET': response = requests.get(url)elif method =='POST': response = requests.post(url, data=data)return response # 结果断言模块classAssertion:defassert_status_code(self, response, expected_status_code):assert response.status_code == expected_status_code,f"Expected status code {expected_status_code}, but got {response.status_code}"# 用例管理模块classTestCase:def__init__(self, method, url, data=None, expected_status_code=200): self.method = method self.url = url self.data = data self.expected_status_code = expected_status_code self.sender = RequestSender() self.assertion = Assertion()defrun(self): response = self.sender.send_request(self.method, self.url, self.data) self.assertion.assert_status_code(response, self.expected_status_code)print(f"Test case passed: {self.method}{self.url}")classTestCaseManager:def__init__(self): self.test_cases =[]defadd_test_case(self, test_case): self.test_cases.append(test_case)defrun_test_cases(self):for test_case in self.test_cases:try: test_case.run()except AssertionError as e:print(f"Test case failed: {e}")# 示例使用if __name__ =="__main__": manager = TestCaseManager()# 添加 GET 请求测试用例 get_test_case = TestCase('GET','https://api.example.com/data') manager.add_test_case(get_test_case)# 添加 POST 请求测试用例 post_data ={'key1':'value1','key2':'value2'} post_test_case = TestCase('POST','https://api.example.com/submit', data=post_data) manager.add_test_case(post_test_case)# 运行所有测试用例 manager.run_test_cases()
代码解释
  • RequestSender 类负责发送 HTTP 请求,根据传入的请求方法和 URL 发送相应的请求。
  • Assertion 类负责结果断言,使用 assert 语句验证响应的状态码是否符合预期。
  • TestCase 类表示一个测试用例,包含请求方法、URL、请求数据和预期状态码等信息。run 方法负责执行测试用例,发送请求并进行断言。
  • TestCaseManager 类负责管理测试用例,包括添加测试用例和运行所有测试用例。在运行测试用例时,如果发生断言失败,会捕获异常并输出错误信息。

问题解决

Requests 请求异常

在使用 Requests 库发送请求时,可能会遇到各种异常,如网络连接失败、请求超时等。可以使用 try-except 语句来捕获并处理这些异常。示例代码如下:

import requests try: response = requests.get('https://api.example.com/data', timeout=5)except requests.exceptions.RequestException as e:print(f"Request error: {e}")

在这段代码中,我们使用 timeout 参数设置了请求的超时时间为 5 秒。如果请求超时或发生其他网络异常,会捕获 requests.exceptions.RequestException 异常并输出错误信息。

断言失败问题

如果断言失败,会抛出 AssertionError 异常。可以在 TestCaseManager 类的 run_test_cases 方法中捕获这个异常,并输出详细的错误信息,帮助我们定位问题。示例代码如下:

classTestCaseManager:def__init__(self): self.test_cases =[]defadd_test_case(self, test_case): self.test_cases.append(test_case)defrun_test_cases(self):for test_case in self.test_cases:try: test_case.run()except AssertionError as e:print(f"Test case failed: {e}")

在这个方法中,如果某个测试用例的断言失败,会捕获 AssertionError 异常并输出错误信息,让我们知道哪个测试用例失败以及具体的错误原因。

总结

通过本节的学习,我们掌握了使用 Python 和 Requests 库搭建基础接口自动化测试框架的方法。我们学习了 Requests 库的基本使用,包括发送 GET 和 POST 请求,还设计了框架的基础结构,包括用例管理、请求发送和结果断言等模块。同时,我们也解决了 Requests 请求异常和断言失败等常见问题。掌握了这些内容后,下一节我们将深入学习框架的扩展和优化,进一步完善对本章接口自动化测试框架搭建主题的认知。


在这里插入图片描述

🍃 系列专栏导航



Read more

2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手?

文章目录 * 2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手? * 一、先给结论(个人开发者视角) * 二、2025 年 9 月最新价格与免费额度 * 三、横向体验对比(2025-11) * 1. 模型与响应 * 2. 项目理解力 * 3. 隐私与离线能力 * 四、怎么选?一句话总结 * 五、官方链接(清晰明了) * 六、结语:AI IDE 2025 的趋势 * 七、AI IDE 的底层工作原理:编辑器为什么突然变聪明了? * 1. 解析层:把你的项目拆得比你自己还清楚 * 2. 索引层:

By Ne0inhk
利用Github与Hexo搭建属于自己的在线个人博客

利用Github与Hexo搭建属于自己的在线个人博客

一、需求描述         自己没有任何可用的在线服务器、但是平时使用markdown编写博客内容,想要将这些博客内容分享到互联网上,让大家都可以查看自己写好的博客内容;同时也方便自己在线访问查阅。         没有在线服务器则可以借助github这个最大的全球在线平台;使用markdown编写博客则可以使用静态博客Hexo。 二、搭建属于自己的在线个人博客  2.1、准备工作   2.1.1、在自己电脑上下载安装Git Githttps://git-scm.com/ 在git安装完成之后点击鼠标右键选择【Git Bash Here】或者直接打开解压后的Git目录下的【git-bash.exe】查看git的版本信息【git --version】如下图所示: 到这里恭喜你表示本机安装git完成。   2.1.2、在自己电脑上下载安装node.js Node.js — Download Node.js®https://nodejs.org/en/download/         配置nodejs在windows的环境变量:选择【

By Ne0inhk

【AI】KIMI2.5---开源榜第一

开源 Kimi 2.5 全景手册(2026 年 1 月版) Moonshot AI 于 2025-12 开源的「多模态 + Agent-Swarm」权重 本文汇总已公开(✅)与仅 API(⚠️)信息,方便一键部署与落地 1. 江湖定位与榜单成绩 基准分数排名(开源)备注LiveBench 2025-1276.4% Pass@1🥇 第 1打平 Claude-4.5-Sonnet,落后 GPT-4.1 约 2ppAgent: BrowseComp78.4🥇 第 1唯一公开「Agent-Swarm」权重Code: SWE-Bench Verified76.8🥇 第

By Ne0inhk

Top10开源AI视频工具:免配置环境开箱即用

Top10开源AI视频工具:免配置环境开箱即用 在生成式AI的浪潮中,图像转视频(Image-to-Video, I2V) 正迅速成为内容创作、影视特效、广告设计等领域的关键技术。相比传统动画制作,I2V技术能以极低的成本将静态图像“激活”为动态视觉内容,极大提升创意效率。 本文聚焦于当前最具实用价值的 Top10开源AI视频工具,并重点介绍其中一款由社区开发者“科哥”二次构建优化的 Image-to-Video 工具——它具备 免配置、开箱即用、WebUI交互友好 等特点,特别适合个人创作者与中小团队快速上手。 1. Image-to-Video 图像转视频生成器(by 科哥) 🌟 核心亮点 * 基于 I2VGen-XL 模型深度优化 * 一键启动脚本,无需手动安装依赖或配置Conda环境 * 完整Web界面操作,支持上传图片、输入提示词、调整参数、预览结果 * 自动日志记录 + 错误诊断机制 * 适配主流NVIDIA显卡(RTX 30/40系列) 一句话总结:

By Ne0inhk