一、前言主流 Python 自动化测试框架横向对比在 Python 自动化测试领域unittest、pytest、Robot Framework是目前工业界最常用的三大测试框架做接口自动化选型时可根据项目规模、团队技术栈选择先通过对比表理清三者核心差异对比维度unittest (Python 内置)pytestRobot Framework安装方式Python 标准库无需额外安装pip install pytestpip install robotframework语法风格基于类继承TestCase函数式 / 面向对象无强制样板代码关键字驱动表格化编写用例断言写法self.assertEqual()等固定断言方法原生 Pythonassert表达式写法灵活关键字断言Should Be Equal 等参数化依赖subTest或第三方库内置pytest.mark.parametrizeTest Template 数据驱动插件生态匮乏拓展依赖第三方HTMLTestRunner极其丰富pytest-html、allure-pytest、pytest-xdist 等中等需额外安装 RequestsLibrary 等库测试报告需手动引入插件生成原生支持多格式报告搭配插件实现 HTML/Allure框架自带日志 测试报告学习成本中等需要熟悉 unittest 固定格式低语法简洁上手快偏高需要熟记关键字语法BDD 支持不支持通过pytest-bdd插件扩展原生 robotframework-bdd 支持适用场景小型项目、老旧遗留系统维护中大型项目、高扩展性接口 / UI 自动化非技术人员参与、团队协作落地自动化选型总结中小型接口自动化项目优先选用pytest兼顾开发效率与拓展性纯手工转自动化、业务人员参与编写用例选 RF老旧 Python 项目兼容改造用原生 unittest。二、Pytest 框架介绍为什么自动化测试首选 PytestPytest 是一款开源高效的 Python 全功能测试框架官方文档https://docs.pytest.org/en/stable/getting-started.html也是当前接口自动化、Web 自动化、APP 自动化主流底层执行框架核心优势如下入门简单无冗余样板代码函数式编写用例零基础几分钟即可上手编写第一条测试用例断言灵活直接使用 Python 原生assert做结果校验不用记忆各类框架专属断言方法报错信息精准直观原生参数化内置参数化装饰器轻松实现一组接口多组入参循环执行接口自动化必备能力海量插件生态依托插件可实现测试报告生成、失败用例重跑、多进程并发执行、覆盖率统计、Allure 精美报告等功能无缝对接 requests、Selenium、Appium灵活用例管控支持用例跳过、预期失败标记、自定义用例标签分组执行适配迭代版本灵活的项目。三、Pytest 环境安装版本适配说明3.1 指定版本安装文档示例固定版本pytest8.3.2该版本最低依赖 Python3.8安装命令# 固定版本安装统一项目环境避免版本差异 pip install pytest8.3.2建议团队统一 pytest 版本防止不同版本 API 变动导致脚本报错。3.2 pytest 与 Python 版本适配对照表若本地 Python 版本低于 3.8按需降级 pytest 版本pytest 版本最低支持 Python 版本8.03.87.13.76.2~7.03.65.0~6.13.53.3~4.62.7/3.43.3 安装验证安装完成后在 Pycharm 确认项目解释器已加载 pytest对比普通 py 脚本与 pytest 用例运行区别原生 python 脚本必须编写if __name__ __main__:主动调用函数才能执行pytest 用例脚本遵循命名规则后代码左侧自带绿色运行箭头一键执行无需手动调用方法。示例简易接口用例# test_01.py import requests def test_baidu_req(): res requests.get(urlhttps://www.baidu.com) print(res.status_code)四、Pytest 用例命名 收集规则核心必记pytest 拥有自动用例收集机制只有满足命名规范框架才能自动识别并执行用例三条硬性规则文件测试文件必须以test_开头 或_test结尾推荐统一 test_开头规范统一测试类类名必须以Test开头禁止自定义__init__构造方法测试方法函数 / 类内方法必须以test开头。重点坑点测试类不能写__init__方法# 错误示例类中定义__init__会导致pytest无法收集用例 class TestDemo(): def __init__(self): print(初始化构造) def test_a(self): pass报错原因pytest 自动实例化测试类自定义__init__会干扰框架实例化逻辑如需前置初始化改用setup()、fixture实现。满足命名规则后终端输入pytest即可自动扫描当前目录所有符合规则的用例并执行。五、Pytest 常用命令行参数日常高频使用通过命令行参数灵活控制用例执行范围、日志输出、报告生成整理高频命令命令作用说明补充备注pytest默认扫描当前目录 子目录所有符合规则用例并执行无pytest -v详细打印用例执行结果展示用例名称和执行状态vverbose 详情pytest -s控制台输出用例中 print () 打印内容默认 pytest 屏蔽 print 输出pytest -vs-v 和 - s 组合简写最常用调试命令日常调试首选pytest -vspytest test_xxx.py仅执行指定 py 文件内所有用例精准执行单文件pytest test_dir/执行指定文件夹下全部用例批量跑目录pytest -k 关键词只运行用例名包含指定关键词的用例模糊匹配筛选用例pytest -m 标记名只执行打了对应 marker 标签的用例用于环境分组冒烟 / 回归pytest --htmlreport.html生成 html 格式测试报告需提前安装pip install pytest-htmlpytest --cov 项目目录统计代码覆盖率依赖 pytest-cov 插件实操示例调试单文件打印详情 print 内容pytest -vs test_01.py只执行 test_case 目录全部用例并生成 html 报告pytest test_case/ --htmlreport/report.html六、pytest.ini 全局配置文件简化命令行频繁敲长串命令繁琐在项目根目录新建pytest.ini配置文件提前预设默认参数后续直接输入pytest即可按配置执行。常用配置模板[pytest] # 默认追加命令行参数等价每次执行自带 -vs addopts -vs # 指定自动扫描用例的目录 testpaths test_case # 自定义用例文件匹配规则默认test_*.py python_files test_*.py # 测试类匹配规则 python_classes Test* # 测试方法匹配规则 python_functions test_* # 自定义用例标签后续-m参数使用 markers smoke: 冒烟测试用例 regression: 回归测试用例配置完成后终端直接执行pytest自动读取配置省去重复输入参数。七、拓展补充自动化落地延伸后续学习方向pytest 夹具 Fixture替代 setup/teardown 实现前后置、接口全局 cookie/headers 封装、参数化实战、Allure 精美报告集成、多进程并发执行pytest-xdist、失败用例重跑接口自动化落地搭配pytestrequestsAllureyaml用例数据分离是当前主流接口自动化技术栈
3.Python 接口自动化之 Pytest 测试框架
发布时间:2026/6/2 23:50:28
一、前言主流 Python 自动化测试框架横向对比在 Python 自动化测试领域unittest、pytest、Robot Framework是目前工业界最常用的三大测试框架做接口自动化选型时可根据项目规模、团队技术栈选择先通过对比表理清三者核心差异对比维度unittest (Python 内置)pytestRobot Framework安装方式Python 标准库无需额外安装pip install pytestpip install robotframework语法风格基于类继承TestCase函数式 / 面向对象无强制样板代码关键字驱动表格化编写用例断言写法self.assertEqual()等固定断言方法原生 Pythonassert表达式写法灵活关键字断言Should Be Equal 等参数化依赖subTest或第三方库内置pytest.mark.parametrizeTest Template 数据驱动插件生态匮乏拓展依赖第三方HTMLTestRunner极其丰富pytest-html、allure-pytest、pytest-xdist 等中等需额外安装 RequestsLibrary 等库测试报告需手动引入插件生成原生支持多格式报告搭配插件实现 HTML/Allure框架自带日志 测试报告学习成本中等需要熟悉 unittest 固定格式低语法简洁上手快偏高需要熟记关键字语法BDD 支持不支持通过pytest-bdd插件扩展原生 robotframework-bdd 支持适用场景小型项目、老旧遗留系统维护中大型项目、高扩展性接口 / UI 自动化非技术人员参与、团队协作落地自动化选型总结中小型接口自动化项目优先选用pytest兼顾开发效率与拓展性纯手工转自动化、业务人员参与编写用例选 RF老旧 Python 项目兼容改造用原生 unittest。二、Pytest 框架介绍为什么自动化测试首选 PytestPytest 是一款开源高效的 Python 全功能测试框架官方文档https://docs.pytest.org/en/stable/getting-started.html也是当前接口自动化、Web 自动化、APP 自动化主流底层执行框架核心优势如下入门简单无冗余样板代码函数式编写用例零基础几分钟即可上手编写第一条测试用例断言灵活直接使用 Python 原生assert做结果校验不用记忆各类框架专属断言方法报错信息精准直观原生参数化内置参数化装饰器轻松实现一组接口多组入参循环执行接口自动化必备能力海量插件生态依托插件可实现测试报告生成、失败用例重跑、多进程并发执行、覆盖率统计、Allure 精美报告等功能无缝对接 requests、Selenium、Appium灵活用例管控支持用例跳过、预期失败标记、自定义用例标签分组执行适配迭代版本灵活的项目。三、Pytest 环境安装版本适配说明3.1 指定版本安装文档示例固定版本pytest8.3.2该版本最低依赖 Python3.8安装命令# 固定版本安装统一项目环境避免版本差异 pip install pytest8.3.2建议团队统一 pytest 版本防止不同版本 API 变动导致脚本报错。3.2 pytest 与 Python 版本适配对照表若本地 Python 版本低于 3.8按需降级 pytest 版本pytest 版本最低支持 Python 版本8.03.87.13.76.2~7.03.65.0~6.13.53.3~4.62.7/3.43.3 安装验证安装完成后在 Pycharm 确认项目解释器已加载 pytest对比普通 py 脚本与 pytest 用例运行区别原生 python 脚本必须编写if __name__ __main__:主动调用函数才能执行pytest 用例脚本遵循命名规则后代码左侧自带绿色运行箭头一键执行无需手动调用方法。示例简易接口用例# test_01.py import requests def test_baidu_req(): res requests.get(urlhttps://www.baidu.com) print(res.status_code)四、Pytest 用例命名 收集规则核心必记pytest 拥有自动用例收集机制只有满足命名规范框架才能自动识别并执行用例三条硬性规则文件测试文件必须以test_开头 或_test结尾推荐统一 test_开头规范统一测试类类名必须以Test开头禁止自定义__init__构造方法测试方法函数 / 类内方法必须以test开头。重点坑点测试类不能写__init__方法# 错误示例类中定义__init__会导致pytest无法收集用例 class TestDemo(): def __init__(self): print(初始化构造) def test_a(self): pass报错原因pytest 自动实例化测试类自定义__init__会干扰框架实例化逻辑如需前置初始化改用setup()、fixture实现。满足命名规则后终端输入pytest即可自动扫描当前目录所有符合规则的用例并执行。五、Pytest 常用命令行参数日常高频使用通过命令行参数灵活控制用例执行范围、日志输出、报告生成整理高频命令命令作用说明补充备注pytest默认扫描当前目录 子目录所有符合规则用例并执行无pytest -v详细打印用例执行结果展示用例名称和执行状态vverbose 详情pytest -s控制台输出用例中 print () 打印内容默认 pytest 屏蔽 print 输出pytest -vs-v 和 - s 组合简写最常用调试命令日常调试首选pytest -vspytest test_xxx.py仅执行指定 py 文件内所有用例精准执行单文件pytest test_dir/执行指定文件夹下全部用例批量跑目录pytest -k 关键词只运行用例名包含指定关键词的用例模糊匹配筛选用例pytest -m 标记名只执行打了对应 marker 标签的用例用于环境分组冒烟 / 回归pytest --htmlreport.html生成 html 格式测试报告需提前安装pip install pytest-htmlpytest --cov 项目目录统计代码覆盖率依赖 pytest-cov 插件实操示例调试单文件打印详情 print 内容pytest -vs test_01.py只执行 test_case 目录全部用例并生成 html 报告pytest test_case/ --htmlreport/report.html六、pytest.ini 全局配置文件简化命令行频繁敲长串命令繁琐在项目根目录新建pytest.ini配置文件提前预设默认参数后续直接输入pytest即可按配置执行。常用配置模板[pytest] # 默认追加命令行参数等价每次执行自带 -vs addopts -vs # 指定自动扫描用例的目录 testpaths test_case # 自定义用例文件匹配规则默认test_*.py python_files test_*.py # 测试类匹配规则 python_classes Test* # 测试方法匹配规则 python_functions test_* # 自定义用例标签后续-m参数使用 markers smoke: 冒烟测试用例 regression: 回归测试用例配置完成后终端直接执行pytest自动读取配置省去重复输入参数。七、拓展补充自动化落地延伸后续学习方向pytest 夹具 Fixture替代 setup/teardown 实现前后置、接口全局 cookie/headers 封装、参数化实战、Allure 精美报告集成、多进程并发执行pytest-xdist、失败用例重跑接口自动化落地搭配pytestrequestsAllureyaml用例数据分离是当前主流接口自动化技术栈