Pytest 自动化测试框架速通指南(一)
摘要本文系统性地介绍了 Python 主流测试框架 Pytest 的核心概念、快速上手方法、运行结果解读、用例编写规则以及常用配置技巧。通过对比分析、代码示例和实战练习帮助读者从零开始掌握 Pytest 的使用构建高效的自动化测试流程。文章大纲本文将围绕以下核心章节展开每个章节都配有详细的讲解和实战代码测试框架概述与 Pytest 优势– 阐述测试框架的五大核心步骤对比 unittest 与 pytest明确学习 Pytest 的必要性。环境搭建与三种启动方式– 详细讲解 Pytest 的安装、验证方法并通过图文演示命令、代码和 IDE 三种启动方式。深入解读测试运行结果– 分析终端输出的结构解释六种用例状态PASSED, FAILED, ERROR, SKIPPED, XFAIL, XPASS及其含义。Pytest 用例编写核心规则– 详解用例的发现机制文件、类、函数命名规则和内容规范可调用、无参数、无返回值。常用配置与参数详解– 介绍如何通过命令行参数和 pytest.ini 配置文件定制测试行为重点讲解 -v, -s, -x, -m 等常用参数。接下来让我们正式进入正文。一、什么是测试框架测试框架是抽象出来的工具集合提供了大量的组件、工具以及功能。其中以下五个步骤是测试必不可少的只有依托于测试框架才能帮助我们完成测试用例发现用例管理环境管理用例执行测试报告大部分的编程语言都会有测试框架例如JavaJunit、testNGPython:unittest、pytest这里将Python的这两种框架以一个表格的形式来做一个对比可以直观地看出两个测试框架的区别与联系。unittest与pytest对比unittestpytest安装、卸载无须安装手动安装升级、降级无法改变版本可以指定版本代码风格JavaPython插件生态只有几个插件1400插件可用备注其他由Python官方来进行维护完全兼容unittest这里不难看出pytest的优点插件多还能指定版本使用完全兼容了unittestpytest是很主流的测试框架因此学习这个测试框架是很必要的。二、快速上手Pytest测试框架这里pytest安装非常简单直接使用这个命令就能安装pip install pytest #第一次安装pip install pytest -U #升级到最新版本电脑上很早之前安装过在安装之前可以先查看一下自己电脑上是否安装了pytest如果是Anaconda 内置 Python那你就需要像我一样这样操作Windows 左下角搜索Anaconda Prompt打开这个黑色专属终端不是普通 CMD/PowerShell直接输入pip install pytest这里就会弹出说明pytest 早已安装成功版本 为8.4.2。这样的情况下就不需要安装了。如果不放心可以使用以上命令查看pytest的版本。这里你可以使用Pycharm这个代码编辑软件来创建一个名为my_pytest的项目如果没有安装这个软件可以参考这篇文章来安装和创建新项目2025年最新版Python安装PyCharm安装教程 图文超级详细_python下载安装教程-CSDN博客这是创建之后的页面可以使用pip install pytest -U来更新到最新版本。这里我新建了一个简单的测试脚本用来测试pytest的三种启动方式。1.命令——直接输入pytest命令当你看到这张图片的内容时说明pytest框架已经工作了环境搭建已经没问题了。2.代码import pytestpytest.main()这里新建了一个main.py的文件然后输入了这段代码点击运行看到如上图所示图片表明pytest已经启动成功。3.鼠标新手小白不推荐——原因1.图标上的绿色箭头是由Pycharm这个软件提供的并不是pytest容易出现BUG。2.行为与前两种方式不一致不适合复杂的项目。通过进一步学习pytest你可以发现pytest在简单的基础上对断言进行了高级封装AST因此它对python数据结构断言是非常友好的。三、详细分析终端pytest运行结果这里我写了三个简单的测试用例然后执行。在刚才新建的项目中添加即可以下是具体的代码展示def test_str(): aaaabbbb baaaabcc assert ab def test_list(): alist(aaabbbb) blist(aaaabcc) assert ab def test_dict(): a{a:1,b:2,c:3} b{a:2,b:2,c:3} assert ab接下来具体解释一下终端的运行结果。platform win32 -- Python 3.11.7, pytest-9.1.1, pluggy-1.6.0 rootdir: E:\PyProject collected 3 itemstest_base.py FFF [100%] FAILURES ____________________________________________________________ test_str ____________________________________________________________def test_str(): aaaabbbb baaaabcc assert ab E AssertionError: assert aaabbbb aaaabcc EE - aaaabcc E aaabbbbtest_base.py:4: AssertionError ___________________________________________________________ test_list ____________________________________________________________test_base.py:15: AssertionError short test summary info FAILED test_base.py::test_str - AssertionError: assert aaabbbb aaaabcc 3 failed in 0.07s 因为终端展示的运行内容比较多这里只保留一个来解释分析。输出的主要内容有1.执行环境版本、根目录、用例数量2.执行过程用例名称、用例结果、以及执行进度3.失败详情用例内容、断言提示4.整体摘要结果情况、结果数量、花费时间补充这里可以使用pytest test_base.py -v这个命令来分开展示进度条。接下来再补充一下用例结果缩写的知识表格如下缩写单词含义.passed通过Ffailed失败用例执行时报错Eerror出错fixture执行报错sskipped跳过Xxpassed预期外的通过不符合预期xxfailed预期内的失败符合预期这个表格不需要死记硬背在项目中见多了就记住了。接下来可以模拟一下六种不同情况的测试用例看一下终端提示结果。import pytest 1、正常通过 PASS def test_pass(): assert 1 1 2、断言失败 FAILED业务逻辑不满足 def test_fail(): assert 1 2 3、代码异常 ERROR用例/夹具内部代码报错非断言失败 pytest.fixture def error_fixture(): # 字符串数字直接相加运行时报错 return 1 1 def test_error(error_fixture): pass 4、标记跳过 SKIPPED pytest.mark.skip(reason功能暂未开发完成暂时跳过执行) def test_skip(): assert True 5、预期失败 XFAIL明确知道这条用例有bug标记预期失败不算失败用例 pytest.mark.xfail(reason已知接口bug待修复预期执行失败) def test_xfail(): assert 99 1 6、允许失败 XPASS标记预期失败但实际执行通过属于意外通过 pytest.mark.xfail(reason本应失败结果代码修复意外通过) def test_xpass(): assert 10 10这是运行结果可以看到表格中出现的六种情况。四、pytest用例规则1.用例发现规则简单来说这个规则就是测试框架识别和加载用例过程故称之为用例发现。pytest的用例发现步骤能够遍历所有的目录例外venv、.开头的目录。打开python文件需要保证以test_开头或者是test_结尾。可以遍历所有的以Test开头的类。收集所有的以test开头的函数和方法类、变量都不是用例。2.用例内容规则pytest对用例的要求是可调用的函数、方法、类、对象。名字以test_开头。没有参数参数是有另外含义的。没有返回值默认为None。3.练习有函数add来接收两个参数并返回它们相加的结果请你为此来编写测试用例。这是参考代码def add(a,b): return ab class TestAdd: # 数字 def test_int(self): res add(1, 2) assert res 3 # 返回字符串(字符串拼接) def test_str(self): res add(1, 2) assert res 12 # 列表拼接 def test_list(self): res add([1], [2,3,4]) assert res [1, 2, 3, 4]运行之后可以看到终端结果为三个点代表测试用例全部通过。这里提醒一下大家千万不要乱删电脑上的软件即使计算机能力很强删东西也要慎重。我在记笔记学习的过程中删掉了一个有关python的软件结果提示我不能正常使用了直接哭死重新配置环境又花了很长时间。┭┮﹏┭┮五、pytest配置框架配置能够改变pytest默认的规则。这里有两种方式可以改变1.命令参数2.ini配置文件也就是所有的配置方式都能够通过这个命令一键获取。pytest -h如图所示。我们可以简单的了解一下里面的配置内容。这里主要讲了有哪些配置分别是什么方式。首先是positional arguments:file_or_dir,文件或者目录这里表示的是用来执行哪个用例的。后面的有-或者两个--的表示的是参数。再往后不带-的是给配置文件去用的。最后大写字母是环境变量。总结一下就是-开头参数小写字母开头ini配置大写字母开头环境变量一般来说配置文件在根目录创建以pytest.ini命名。接下来了解一下常用的参数。-v:增加详细程度-s:在用例中正常的使用输入和输出先输入这个测试用例def test_input(): ainput(请输入手机号)然后输入pytest -vv -ss,会得到上面的提示。随机输入一段数字回车该测试用例才会通过。这是输入测试用例只有加-s才能看到输出用例同样如此。def test_print(): print(张三联系方式是12345678)-x:快速退出如果收到失败用例后面的用例不再执行。-m用例筛选具体筛选细则在下一篇——标记mark当中讲笔记有点多先学习前五章~下面的内容参考第二篇有关pytest的文章~今天就学到这里可以点个关注哦还会更新更多有关测试的学习内容(*︶)。

相关新闻

【仪器仪表专题】瓦楞纸板纸箱容易破一般怎么做来料检验测试

【仪器仪表专题】瓦楞纸板纸箱容易破一般怎么做来料检验测试

背景 瓦楞纸包装在仓储、运输、装卸过程中容易破,容易导致箱内产品的损坏并且增加了企业售后成本,同时造成品牌形象损耗。那么是否有一种指标能够表示出瓦楞纸的强度呢? 根据:GB/T 6545-1998 瓦楞纸板耐破强度的测定法,其中有一个核心的关键指标是:耐破强度。这项指标对瓦…

2026/7/27 7:30:25 阅读更多 →
COMSOL流固耦合模拟在煤矿瓦斯抽采中的应用

COMSOL流固耦合模拟在煤矿瓦斯抽采中的应用

1. 瓦斯抽采与流固耦合模拟的技术背景煤矿瓦斯抽采是保障井下安全生产的关键环节。传统物理实验方法存在成本高、周期长、难以复现复杂地质条件等局限。数值模拟技术通过建立数学模型,可以高效分析不同抽采方案下的瓦斯运移规律。COMSOL Multiphysics作为一款多物理…

2026/7/27 7:29:25 阅读更多 →
国自然申报方法论:锚定-区隔-赋能三步提升命中率

国自然申报方法论:锚定-区隔-赋能三步提升命中率

1. 国自然申报的核心挑战与破局思路每年国家自然科学基金(简称"国自然")申报季,最让科研人员头疼的就是如何在有限的5页纸内,清晰呈现项目的科学价值与创新性。传统写法往往陷入两个极端:要么堆砌大量技术细…

2026/7/27 7:29:25 阅读更多 →

最新新闻

Go代码混淆实战:使用Garble保护API密钥与敏感配置

Go代码混淆实战:使用Garble保护API密钥与敏感配置

1. 项目概述:为什么Go开发者需要关注代码混淆?最近在几个Go语言社区里,经常看到有朋友在讨论API密钥泄露的问题。有人把带密钥的代码误提交到了公开仓库,没过多久就收到了云服务商的异常账单提醒;也有人发现自己的后端…

2026/7/27 7:34:27 阅读更多 →
“我现在这样,是不是以后也会一直这样?”

“我现在这样,是不是以后也会一直这样?”

这个问题背后,隐藏的是对未来的恐惧:我现在的状态,会不会变成我的命运?答案是: 不会。 但改变也不会自动发生。第一层:为什么大脑会产生“以后也会这样”的感觉? 因为大脑倾向于根据过去预测未来…

2026/7/27 7:34:27 阅读更多 →
Frida在游戏逆向中的核心应用:动态Hook、反调试对抗与实战技巧

Frida在游戏逆向中的核心应用:动态Hook、反调试对抗与实战技巧

1. 项目概述:为什么游戏逆向绕不开Frida? 如果你在游戏安全、外挂检测或者移动应用安全这个圈子里混过一段时间,肯定会反复听到一个名字: Frida 。它早已不是某个小圈子里的秘密武器,而是成为了动态分析领域的“瑞士…

2026/7/27 7:34:27 阅读更多 →
计算机视觉在水果质量检测中的算法优化与实践

计算机视觉在水果质量检测中的算法优化与实践

1. 水果质量检测的行业痛点与技术背景水果分选是农产品加工中至关重要的环节,直接影响产品附加值和消费者体验。传统人工分选方式存在三大致命缺陷:首先,人工分选效率低下,熟练工人每小时最多处理800-1000个水果,而现代…

2026/7/27 7:34:27 阅读更多 →
AI编程与英语学习的创新融合实践

AI编程与英语学习的创新融合实践

1. 项目概述:当AI编程遇上英语学习去年在GitHub上看到一个中学生用30行Python代码实现的单词记忆程序,让我突然意识到——编程和语言学习的结合点远比我们想象的要多。现在把这个思路升级后做成了一套完整解决方案,核心是用AI技术把枯燥的英语…

2026/7/27 7:34:27 阅读更多 →
Llama 3.1 405B大模型API调用指南与实战

Llama 3.1 405B大模型API调用指南与实战

1. 认识Llama 3.1 405B语言模型Llama 3.1 405B是目前开源领域最强大的语言模型之一,由知名研究机构发布。这个拥有4050亿参数的庞然大物,在多项基准测试中表现接近GPT-4级别,为开发者提供了一个强大的开源替代方案。作为一款前沿的大语言模型…

2026/7/27 7:33:27 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻