Pytest自动化测试框架完整详解|从入门到企业级实战(超全干货) Pytest自动化测试框架完整详解从入门到企业级实战超全干货一、前言在 Python 自动化测试领域Pytest 已经是目前行业主流、企业通用的测试框架。相比传统的 unittestpytest 语法更简洁、扩展性更强、插件生态极其丰富适配接口自动化、UI自动化、性能测试、批量回归测试等绝大多数测试场景。本文将从 核心特性、环境搭建、用例规则、夹具使用、参数化、断言、批量执行、实战项目 全方位讲解 pytest 框架适合新手系统学习、老手复盘沉淀、工作项目直接落地。二、Pytest 核心优势为什么企业都用它语法极简无需继承类、无需固定模板普通函数即可写用例兼容性强完美兼容 unittest 用例旧项目无缝迁移强大Fixture替代传统 setup/teardown支持灵活的前置后置、数据共享丰富插件生态allure报告、重试、并发、多线程、参数化全覆盖高度自由可自定义钩子、可扩展全局配置、适配企业级框架三、环境安装**基础安装命令pip install pytest常用全套扩展企业自动化必备pip install pytest-requests pytest-allure-adaptor pytest-rerunfailures pytest-xdist四、Pytest 核心命名规则必须遵守pytest 默认只会识别符合规则的用例否则无法自动执行文件名test_*.py 或者 *_test.py测试类类名以 Test 开头不能带init方法测试方法/函数以 test_ 开头五、最简测试用例实战入门无需类、无需继承极简写法# test_demo.pydeftest_case_01():最简pytest测试用例a10b20assertab30终端执行pytest test_demo.py-v-s-v详细日志-s打印控制台输出六、Pytest 高级断言机制pytest 最大优势之一支持原生 Python 断言无需 self.assertEqualdeftest_assert_demo():namepytest# 布尔断言assertnamepytest# 包含断言asserttestinname# 非空断言assertnameisnotNone# 数值断言assertlen(name)0七、Fixture 夹具企业级核心重点Fixture 是 pytest 替代 setup/teardown 的核心功能支持函数级、类级、模块级、全局级前置后置。1. 基础 fixture 使用importpytestpytest.fixture()definit_data():前置准备数据print(用例前置初始化测试数据)data{username:test,password:123456}yielddataprint(用例后置清理测试数据)# 使用夹具deftest_login(init_data):print(执行登录用例)print(init_data)assertinit_data[username]test2. 全局共享 fixtureconftest企业项目标准用法新建 conftest.py所有目录用例自动引用无需导入。# conftest.pyimportpytestpytest.fixture(scopesession)defbase_url():returnhttps://api-test.com直接在任意用例使用deftest_api_demo(base_url):print(base_url)scope 级别function默认每用例执行一次class类内所有用例一次module整个文件一次session整个项目运行一次八、参数化测试批量接口用例神器日常接口自动化、多组数据测试高频使用代码极简、扩展性极强。importpytest test_data[(zhangsan,123456,200),(lisi,123123,200),(,,400)]pytest.mark.parametrize(user,pwd,code,test_data)deftest_login_param(user,pwd,code):assertlen(user)0九、接口自动化完整实战模板pytestrequests可直接用于企业项目、副业接单、日常工作。importrequestsimportpytestpytest.fixture(scopesession)defheaders():return{Content-Type:application/json,token:xxxx}deftest_get_api(headers):urlhttps://api-demo.com/testresrequests.get(url,headersheaders)assertres.status_code200assertres.json()[code]200deftest_post_api(headers):urlhttps://api-demo.com/logindata{username:test01,password:123456}resrequests.post(url,jsondata,headersheaders)assertres.json()[code]200十、批量执行与常用命令大全# 执行当前目录所有用例pytest# 指定文件执行pytest test_demo.py# 详细输出pytest-v# 打印日志pytest-s# 只执行带指定标记的用例pytest-msmoke# 失败重跑2次pytest--reruns2十一、Allure 精美测试报告集成企业级自动化必备报告可视化、美观、可交付。# 生成原始数据pytest--alluredirallure-result# 启动报告服务allure serve allure-result十二、总结Pytest 企业级价值极简语法大幅降低自动化脚本维护成本Fixture 灵活管控前置后置实现数据复用、解耦参数化批量覆盖测试场景适配接口回归测试丰富插件支持报告、重试、并发适配完整CI/CD流程是目前测开、接口自动化、副业接单的主流技术栈后续持续更新 Pytest 框架进阶、CI集成、自动化平台实战、接口框架封装等深度干货。#pytest #Python自动化 #自动化测试 #测试开发 #接口测试 #软件测试 #测试框架