pytest测试专题 - 2.1 一种推荐的测试目录结构

embedded/2025/2/21 5:59:05/

<< 返回目录

pytest__21__2">1 pytest测试专题 - 2.1 一种推荐的测试目录结构

pytest__4">2 pytest 项目目录结构及文件功能

以下是典型 pytest 项目中常见的文件和目录结构及其功能的概述:


2.1 文件/目录结构

文件/目录功能描述
test_ 文件* 主测试文件,命名通常以 test_ 开头(如 test_sample.py)。
* 包含测试函数,命名也以 test_ 开头(如 test_function()
conftest.py* 项目级配置文件,用于定义公共的 fixtures、hooks 和插件。
* 对所有测试文件和子目录生效。
pytest.ini* 配置文件,用于指定 pytest 的行为(如默认标记、命令行选项)。
* 优先级高于默认配置。
__init__.py* 使目录成为 Python 包,允许模块导入。
* 通常用于测试目录结构中的子目录。
fixtures/* 自定义的 fixtures 目录,用于存储可重用的测试资源(如数据库连接、配置等)
mocks/* 存储测试中使用的模拟对象(Mock 对象),用于模拟外部依赖(如 API、数据库)
plugins/* 存储自定义的 pytest 插件,扩展框架功能(如自定义报告、命令行参数等)
data/* 存储测试数据文件(如 JSON、CSV),供测试用例动态加载和使用
logs/* 存储测试运行日志,方便调试和分析测试结果
reports/* 存储生成的测试报告(如 HTML、XML),通过插件(如 pytest-html)生成
.gitignore* 忽略不需要版本控制的文件或目录(如临时文件、日志)
requirements.txt* 列出项目依赖的第三方库,用于快速安装依赖(如 pytest, pytest-cov

2.2 目录结构示例

project/
├── tests/
│ ├── conftest.py
│ ├── test_sample.py
│ ├── fixtures/
│ │ └── db_connection.py
│ ├── mocks/
│ │ └── mock_api.py
│ ├── data/
│ │ └── test_data.json
│ └── init.py
├── src/
│ └── my_module.py
├── pytest.ini
├── requirements.txt
├── .gitignore
└── README.md


2.3 文件作用详解

  1. test_ 文件
  • 包含实际的测试用例,名称必须以 test_ 开头(如 test_login.py)。
  • 测试函数名也必须以 test_ 开头(如 test_user_login)。
  1. conftest.py
  • 用于定义全局的 fixtures,如数据库连接、测试配置等。
  • 可以被所有测试文件共享。
  1. pytest.ini
  • 配置文件,用于定义默认命令行参数(如 addopts = -v)或标记(如 markers = slow)。
  1. fixtures/
  • 存储可重用的测试资源,如数据库连接、HTTP 客户端等。
  • 通过 @pytest.fixture 装饰器定义。
  1. mocks/
  • 存储模拟对象,用于测试中的外部依赖(如 API 调用)。
  • 常用库:unittest.mockpytest-mock
  1. data/
  • 存储测试所需的静态数据文件(如 JSON、CSV)。
  • 测试用例可以通过文件加载数据。
  1. logs/
  • 存储测试运行产生的日志,方便调试和分析问题。
  1. reports/
  • 存储生成的测试报告(如 HTML、XML),通过插件(如 pytest-html)生成。
  1. requirements.txt
  • 列出项目依赖的库(如 pytest 及其插件)。
  • 通过 pip install -r requirements.txt 安装。

2.4 配置示例

pytestini__91">2.4.1 pytest.ini 示例

[pytest]
addopts = -v --tb=short
markers =slow: marks tests as slowfast: marks tests as fast**conftest.py 示例**
```py
import pytest@pytest.fixture
def db_connection():# 模拟数据库连接yield "db_conn"# 清理资源

test_sample.py 示例

def test_add():assert 1 + 1 == 2@pytest.mark.slow
def test_slow_function():import timetime.sleep(5)assert True

作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

<< 返回目录


http://www.ppmy.cn/embedded/163473.html

相关文章

BT401双模音频蓝牙模块如何开启ble的透传,有什么注意事项

BT401音频蓝牙模块如何开启ble的透传&#xff1f; 首先BT401的蓝牙音频模块&#xff0c;分为两个版本&#xff0c;dac版本和iis数字音频版本 DAC版本&#xff1a;就是BT401蓝牙模块【9和10脚】直接输出模拟音频信号&#xff0c;也就是说&#xff0c;直接推动耳机可以听到声音 …

网络集成和网络安全集成

1、数据集成数据集成是计算机网络系统技术应用的基本形式,也是集成技术的直观体现。包括数据转换和数据集成两种形满意的。摘要随着网络的全球化,计算机技术已经广泛运用于各个领域网络技术的普及和推广,标志着我们已经走进了为要把各部分数据源进行高度集成整个需要花费很长的…

Java 基于SpringBoot+Vue 的旅游网站信息化管理系统设计与实现

Java 基于SpringBootVue 的旅游网站信息化管理系统设计与实现 博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f34…

Python+wxauto:实现电脑端微信程序自动化

目录 创建客户端对象 发送消息 发送纯文本消息 发送图片或文件消息 获取好友列表 获取当前群组成员 获取所有好友详情信息 获取聊天窗口消息 切换聊天框 添加好友 获取新的好友申请列表 接收好友添加请求 加载历史聊天记录 消息监听 添加监听对象 获取监听对象…

【Linux基础】Linux下常用的系统命令

文章目录 一、前言二、系统监控和进程管理指令2.1 ps命令2.2 top命令2.3 kill命令2.4 shutdown命令 三、文件和目录管理指令3.1 cd命令3.2 ls命令3.3 mkdir命令3.4 cat 命令3.5 cp命令3.6 mv命令3.7 rm命令3.8 chmod命令3.9 ln命令3.10 pwd命令 四、文件查找和文本处理指令4.1 …

【Spring Boot 实现 PDF 导出】

Spring Boot 实现 PDF 导出 在Spring Boot应用程序中实现PDF导出功能&#xff0c;可以选择多种库和技术栈。每种方法都有其优缺点&#xff0c;适用于不同的场景。以下是四种常见的方式&#xff1a;iText、Apache PDFBox、JasperReports 和 Thymeleaf Flying Saucer。我将详细…

vscode远程报错:Remote host key has changed,...

重装了Ubuntu系统之后&#xff0c;由20.04改为22.04&#xff0c;再用vscode远程&#xff0c;就出现了以上报错。 亲测有效的办法 gedit ~/.ssh/known_hosts 打开这个配置文件 删掉与之匹配的那一行&#xff0c;不知道删哪一行的话&#xff0c;就打开第一行这个 /.ssh/confi…

论文笔记(七十二)Reward Centering(一)

Reward Centering&#xff08;一&#xff09; 文章概括摘要1 奖励中心化理论 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…