pytest基础知识

pytest是Python的第三方测试框架,提供简洁高效的测试体验,支持多种插件并兼容unittest。本文介绍了pytest的安装、命名规范、运行命令、简单使用、参数化及测试报告的生成,帮助初学者快速上手。

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

前言:pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效,支持315种以上的插件,同时兼容 unittest 框架。这就使得我们在 unittest 框架迁移到 pytest 框架的时候不需要重写代码。

一、安装pytest

首先使用 pip 安装 pytest

pip3 install pytest

查看 pytest 是否安装成功

pip3 show pytest

二、命名规范

1、默认搜索规则:
如果pytest命令行有指定目录,则从该目录中开始查找测试用例文件,如果没有指定,则从当前运行目录开始查找文件。注意,该查找是递归查找,子目录中的文件也会被查找到。
并不是能够查找到目录下的所有文件,只有符合命名规则的文件才会被查找。默认规则是以test_开头或者以_test结尾的.py文件。
在测试文件中查找Test开头的类,以及类中以test_开头的方法,查找测试文件中test_开头的函数。

2、测试用例默认命名规则:
.py 测试文件必须以test_开头(或者以_test结尾)
测试类必须以Test开头,并且不能有 init 方法
测试方法必须以test_开头
所在的包必须要有__init__.py文件

三、运行命令

执行用例命令参数:
pytes 运行目录下所有用例
pytest test_mod.py 运行文件内所有用例
pytest -s 输出调试信息,包括print打印的信息
pytest -v 丰富信息模式,输出更详细的用例执行信息
pytest -q 安静模式,不输出环境信息
pytest -x 只要一个用例报错,那么测试停止运行
pytest --maxfail=num 错误用例达到次数停止
pytest -k “**** not ****”按照包含的关键字运行对应内容
pytest test_mod.py::test_func 运行某个文件中独一个用例
pytest test_mod.py::TestClass::test_method 运行模块里面测试类里面的某种方法
pytest -m slow 通过mark标记运行测试
pytest.main() 代码中直接调用pytest
(可详见:https://blog.youkuaiyun.com/weixin_44006041/article/details/107934174)

四、简单使用

创建一个简单的实例,如下

# test1.py 文件
def test_one()
<think>好的,用户现在要我介绍Python基础知识pytest基础知识。首先,我需要确定用户的学习背景和需求。可能用户是刚开始学习编程的新手,或者已经有一定基础,想了解测试框架pytest。因为用户之前询问了关于SQL注入防御的内容,可能是在开发过程中遇到了安全问题,现在想进一步巩固Python和测试方面的知识。 接下来,我需要组织Python基础知识的介绍。Python的基础包括数据类型、控制结构、函数、模块和包、文件操作等。这些是构建任何Python项目的基石,尤其是对于测试来说,理解这些概念非常重要。要确保解释清晰,例子简单明了,避免使用复杂术语,让新手也能理解。 然后是pytest部分。用户可能已经知道单元测试的重要性,特别是在防止回归和确保代码质量方面。需要解释pytest的特点,比如简洁的语法、丰富的断言、fixture机制和插件系统。要对比unittest,突出pytest的优势,比如不需要类继承,使用assert更直观。同时,提供基础用法示例,比如如何编写测试函数,如何使用fixture,以及如何运行测试。 还要考虑用户可能需要的实际应用场景。例如,如何将pytest应用到现有项目中,如何组织测试目录结构,如何处理依赖项等。这部分可能需要一些最佳实践的例子,比如使用conftest.py共享fixture,或者参数化测试用例以提高覆盖率。 另外,需要提醒用户常见的注意事项,比如测试命名规范,避免测试之间的依赖,利用pytest的插件生态等。这些可以帮助用户避免常见错误,提高测试效率。 最后,总结部分要简明扼要,强调Python的易用性和pytest的强大功能,鼓励用户多动手实践。可能还需要提供进一步学习的资源,比如官方文档或推荐书籍,但根据用户的问题,可能不需要深入到这里,但需要确保覆盖基础内容。 整个过程中要保持结构清晰,分点讲解,使用代码示例辅助说明。同时,注意使用中文口语化表达,避免过于技术化的术语,让内容易于理解。检查是否有遗漏的重要知识点,比如虚拟环境的使用,或者pytest的高级特性,但根据用户的问题,可能基础部分已经足够。</think>### **Python 基础知识Pytest 框架详解** --- #### **一、Python 基础核心概念** --- ##### **1. Python 特点** - **解释型语言**:无需编译,逐行执行。 - **动态类型**:变量类型在运行时自动推断。 - **简洁语法**:代码可读性高,例如用缩进替代大括号。 - **丰富的库生态**:如 `NumPy`(科学计算)、`Pandas`(数据分析)、`Flask`(Web 开发)等。 --- ##### **2. 基础语法与数据类型** - **变量与赋值** ```python a = 10 # 整数 b = 3.14 # 浮点数 name = "Alice" # 字符串 is_valid = True # 布尔值 ``` - **复合数据类型** ```python # 列表(可变) numbers = [1, 2, 3] numbers.append(4) # 修改列表 # 元组(不可变) coordinates = (10, 20) # 字典(键值对) user = {"name": "Bob", "age": 25} ``` - **控制结构** ```python # 条件判断 if a > 5: print("a 大于 5") elif a == 5: print("a 等于 5") else: print("a 小于 5") # 循环 for num in numbers: print(num * 2) count = 0 while count < 5: print(count) count += 1 ``` - **函数定义** ```python def add(x, y): """返回两数之和""" return x + y result = add(3, 5) # 输出 8 ``` - **文件操作** ```python # 写入文件 with open("data.txt", "w") as f: f.write("Hello, World!") # 读取文件 with open("data.txt", "r") as f: content = f.read() # content = "Hello, World!" ``` --- ##### **3. 面向对象编程(OOP)** ```python class Dog: # 类属性 species = "Canis familiaris" # 构造方法 def __init__(self, name, age): self.name = name # 实例属性 self.age = age # 实例方法 def bark(self): print(f"{self.name} 正在汪汪叫!") # 创建对象 my_dog = Dog("Buddy", 3) my_dog.bark() # 输出: Buddy 正在汪汪叫! ``` --- #### **二、Pytest 测试框架基础** --- ##### **1. Pytest 核心优势** - **简洁语法**:无需继承类,直接编写测试函数。 - **自动发现测试**:默认查找 `test_*.py` 文件和 `test_` 开头的函数。 - **丰富断言**:直接使用 `assert`,无需记忆特定方法。 - **Fixture 机制**:高效管理测试依赖(如数据库连接)。 - **插件生态**:支持扩展(如 `pytest-cov` 生成覆盖率报告)。 --- ##### **2. 安装与基础用法** - **安装** ```bash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值