pytest学习手记

本文深入探讨了pytest测试框架中标记的正确使用方法。通过对比书中示例与实际操作结果,指出书中关于标记使用的误导,并分享了正确的命令写法。文章强调了在使用pytest的-m参数进行测试用例筛选时,去掉引号的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. -m 标记
    pytest测试实战一书中给出的用例是:>pytest -v -m ‘smoke’
    但测试下来发现怎么也起不到筛选测试用例的作用,而是所有测试用例一起都测试了

经多方查找,最终发现不带引号的写法是能起到作用的:>pytest -v -m smoke

<think>首先,用户的问题是:“我想学习pytest测试框架的使用 请问pytest 测试框架 入门 教程”。这是一个关于pytest测试框架入门教程的请求。 根据系统级指令,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - 引用[1]:关于pytest的重要性、替代unittest和nose。 - 引用[2]:用例执行顺序、参数解析等。 - 引用[3]:pytest.ini配置文件的作用。 - 引用[4]:pytest的安装和插件。 - 引用[5]:执行特定测试方法。 这些引用是站内内容,我需要自然地融入回答中,并在引用的段落末尾添加引用标识。 回答结构: - 由于用户要求入门教程,我应该提供逐步的指南。 - 结构清晰:介绍pytest、安装、基本用法、示例代码、配置文件等。 - 使用中文。 - 最后生成相关问题。 大纲回答: 1. 介绍pytest:简要说明pytest是什么,为什么使用它。 - 参考引用[1]:pytest是unittest和nose的替代选项,支持复杂测试。 2. 安装pytest:如何安装。 - 参考引用[4]:pip install pytest。 3. 基本用法:如何运行测试。 - 参考引用[2]和[5]:命令行模式,运行特定测试。 4. 编写测试用例:示例代码。 - 提供简单Python代码示例。 5. pytest.ini配置文件:解释其作用。 - 参考引用[3]:改变pytest默认行为。 6. 插件和扩展:如pytest-html, pytest-xdist等。 - 参考引用[4]。 7. 生成相关问题。 在回答中,当引用特定内容时,在段落末尾添加[^数字]。 确保没有数学表达式,所以不需要使用LaTeX数学格式,除非用户问题涉及数学。用户问题是关于pytest的,没有数学内容,所以可能不需要数学格式。但指令说“所有行内数学表达式必须使用$...$格式”,如果用户问题没有数学,我就不用添加。同样,独立公式如果需要,但这里不需要。 生成相关问题:在最后,添加“相关问题”部分。 完整回答结构: - 开头:直接回应用户问题。 - 主体:分步骤讲解。 - 结尾:相关问题。 现在,构建回答。</think>### pytest测试框架入门教程 pytest是一个流行的Python测试框架,它以简洁的语法和强大的功能著称,特别适合初学者入门。它支持单元测试、功能测试和集成测试,并能轻松扩展插件。下面我将以结构化的方式,一步步引导你学习pytest的基础使用,确保内容真实可靠,基于官方文档和最佳实践[^1]。 #### 1. **pytest简介** pytest是Python内置unittest模块的现代替代品,它简化了测试用例的编写和运行。相比unittest,pytest不需要继承特定类,使用更直观的断言语法,并支持丰富的插件生态系统,如生成HTML报告或分布式测试[^1][^4]。关键优势包括: - 自动发现测试用例(无需手动指定)。 - 详细的错误报告,便于调试。 - 兼容unittest和nose的测试用例。 #### 2. **安装pytest** 使用pip安装pytest及其常用插件: ```bash pip install pytest pytest-html pytest-xdist pytest-rerunfailures ``` 其中: - `pytest-html`:生成HTML格式测试报告。 - `pytest-xdist`:支持多CPU并行测试,提高执行速度。 - `pytest-rerunfailures`:允许失败用例自动重试[^4]。 #### 3. **编写第一个测试用例** pytest的测试用例以Python函数形式编写,函数名需以`test_`开头。创建一个文件`test_sample.py`: ```python # 示例:测试一个简单的加法函数 def add(a, b): return a + b def test_add_positive_numbers(): assert add(2, 3) == 5 # 使用assert进行断言,无需额外库 def test_add_negative_numbers(): assert add(-1, -1) == -2 ``` 说明: - 测试函数名以`test_`开头,pytest会自动识别。 - `assert`语句用于验证结果,如果失败会输出详细错误。 #### 4. **运行测试用例** pytest支持命令行运行,灵活控制测试范围和输出: - **基本运行**:在项目根目录执行`pytest`,pytest会自动发现所有`test_*.py`文件并运行测试函数[^2][^3]。 - **常用参数**: - `-v`:显示详细输出(包括每个测试用例的名称)。 - `-s`:打印测试中的print语句(如调试信息)。 - `--maxfail=2`:当错误达到2个时停止运行。 示例命令: ```bash pytest -vs # 详细输出并显示print内容 ``` - **运行特定测试**: - 执行单个文件:`pytest test_sample.py` - 执行文件中的特定函数:`pytest test_sample.py::test_add_positive_numbers`[^5] - 跳过某些用例:`pytest -k "add and not negative"`(运行名称包含“add”但不含“negative”的测试) #### 5. **配置pytest.ini文件** `pytest.ini`是核心配置文件,用于自定义pytest行为。创建在项目根目录(编码需为ANSI),例如: ```ini [pytest] addopts = -vs # 默认命令行参数(详细输出) testpaths = ./tests # 指定测试文件夹 python_files = test_*.py # 测试文件命名规则 python_classes = Test* # 测试类命名规则(如类名以Test开头) python_functions = test_* # 测试函数命名规则[^3] ``` 作用:统一配置后,运行`pytest`时自动应用规则,减少重复输入参数。 #### 6. **进阶功能与插件** - **用例执行顺序**:默认按文件名和函数定义的ASCII码顺序执行[^2]。如需改变顺序,安装`pytest-ordering`插件: ```bash pip install pytest-ordering ``` 在测试函数上添加装饰器: ```python import pytest @pytest.mark.run(order=1) # 指定执行顺序 def test_first(): assert True ``` - **生成报告**:使用`pytest-html`生成美观报告: ```bash pytest --html=report.html ``` - **失败重试**:`pytest-rerunfailures`允许失败用例重试: ```bash pytest --reruns 3 # 失败时重试3次 ``` #### 7. **最佳实践建议** - **测试结构**:将测试代码放在单独目录(如`tests/`),与业务代码分离。 - **断言技巧**:pytest支持智能断言,如`assert [1, 2] == [1, 3]`会输出差异详情。 - **持续集成**:pytest易与CI工具(如Jenkins)集成,确保代码质量。 - 学习资源:推荐官方文档([pytest.org](https://docs.pytest.org/))和实战项目练习。 通过以上步骤,你可以快速上手pytest。记住,测试是开发的关键部分,能显著提升代码可靠性[^1]。实践中遇到问题,可以查阅官方文档或社区论坛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值