news 2026/3/29 8:16:51

【Pytest】结构介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Pytest】结构介绍

目录结构介绍

  1. project_root/

  2. ├── tests/ # 测试用例存放目录

  3. │ ├── __init__.py

  4. │ ├── test_module1.py

  5. ├── module1.py # 被测试的模块

  6. ├── conftest.py # pytest配置文件,可定义fixture和钩子函数

  7. ├── pytest.ini # pytest全局配置文件

  8. └── run.py # 运行测试的脚本

pytest.ini

pytest.ini 是 pytest 测试框架的配置文件,它允许你对 pytest 的行为进行全局或项目级别的定制。

作用:

  • 全局配置:借助 pytest.ini 文件,你可以为整个项目设定通用的配置选项,从而避免在每次运行 pytest 时都要在命令行输入相同的参数。

  • 提高可维护性:把配置信息集中存放在一个文件里,能让项目的配置更加清晰,便于维护和管理。

  • 定制测试行为:可以自定义测试发现规则、指定插件、设置日志级别等,以满足不同项目的特定需求。

addopts

此配置项用于添加额外的命令行选项,这些选项会在每次运行 pytest 时自动生效。

  1. [pytest]

  2. addopts = -v -s

-v:表示以详细模式运行测试,会输出更多的测试信息。
-s:表示捕获标准输出,允许测试用例中的 print 语句正常输出。

testpaths

该配置项用于指定 pytest 搜索测试文件的路径。

  1. [pytest]

  2. testpaths = tests

这意味着 pytest 只会在 tests 目录及其子目录下查找测试文件。

norecursedirs

此配置项用于指定 pytest 不进行递归搜索的目录。

  1. [pytest]

  2. norecursedirs = .git venv

这表明 pytest 不会在 .git 和 venv 目录及其子目录下查找测试文件。

conftest.py

conftest.py 是 pytest 里一个非常重要的文件,它能对 pytest 的测试行为进行灵活配置与扩展。

共享 Fixture 函数

Fixture 是 pytest 里用于提供测试数据、初始化测试环境等的可复用函数。在 conftest.py 里定义的 Fixture 函数能够被同目录及其子目录下的所有测试文件使用,无需在每个测试文件中重复定义。

Fixture 函数可以有参数,并且可以设置作用域(如 function、class、module、session)​​​​​​​

  1. # conftest.py

  2. import pytest

  3. @pytest.fixture(scope="module")

  4. def db_connection():

  5. # 模拟数据库连接

  6. print("建立数据库连接")

  7. yield # 在此处执行测试用例

  8. print("关闭数据库连接")

自定义钩子函数

钩子函数是 pytest 提供的一些特殊函数,能在测试执行的不同阶段插入自定义逻辑。在 conftest.py 里定义钩子函数可对 pytest 的默认行为进行修改。​​​​​​​

  1. # conftest.py

  2. import pytest

  3. def pytest_sessionstart(session):

  4. """在测试会话开始时执行"""

  5. print("测试会话开始")

  6. def pytest_sessionfinish(session, exitstatus):

  7. """在测试会话结束时执行"""

  8. print("测试会话结束")

也可以 在这里,全局配置和初始化

可在 conftest.py 中进行一些全局配置和初始化操作,例如设置日志、加载配置文件等,让所有测试文件都能使用这些配置。

注意事项

  • conftest.py 文件不需要手动导入,pytest 会自动发现并加载它。

  • 不同目录下的 conftest.py 文件有不同的作用范围,子目录下的 conftest.py 文件会覆盖父目录中同名的配置。

  • 合理使用 Fixture 的作用域,避免不必要的资源浪费。

run.py

1、统一测试入口

在大型项目里,测试用例可能分布在多个不同的目录和文件中。借助 run.py 文件,你可以把所有测试的启动逻辑集中起来,让测试的执行更加统一和便捷。开发人员或测试人员只需运行这个文件,就能启动整个项目的测试流程。

2、定制测试运行参数

run.py 文件允许你根据不同的需求定制 pytest 的运行参数,例如指定测试文件、设置测试报告路径、控制测试的详细程度等。​​​​​​​

  1. import pytest

  2. if __name__ == "__main__":

  3. # 只运行 tests 目录下的测试用例,并生成 HTML 报告

  4. pytest.main(['-v', '-s', '--html=report.html', 'tests'])

在上述代码中:

  • -v 表示以详细模式运行测试,会输出更多的测试信息。

  • -s 表示捕获标准输出,允许测试用例中的 print 语句正常输出。

  • –html=report.html 表示生成一个名为 report.html 的 HTML 测试报告。

  • tests 表示只运行 tests 目录下的测试用例。

执行测试前的预处理操作

在 run.py 文件中,你可以添加一些测试前的预处理操作,比如初始化测试环境、加载配置文件、启动服务等。类似于conftest.py作用

执行测试后的清理操作

同样,你也可以在 run.py 文件中添加测试后的清理操作,如关闭服务、删除临时文件等,确保测试环境恢复到初始状态。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 12:16:21

从山东菏泽到硅谷:一个测试工程师的全球远程职业路

数字时代的测试工程师蜕变 在全球数字化转型浪潮中,软件测试工程师的角色已从传统的缺陷发现者演变为质量保障的核心驱动力。2026年,随着远程工作模式的普及和AI技术的渗透,测试从业者不再受地域限制,山东菏泽的工程师也能无缝对…

作者头像 李华
网站建设 2026/3/18 19:20:10

基于最小二乘支持向量机LSSVM、粒子群算法支持向量机和改进粒子群算法支持向量机三种方法的电力短期负荷预测Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/3/28 11:08:09

文献查询免费网站推荐:实用学术资源检索平台汇总

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

作者头像 李华
网站建设 2026/3/27 3:56:56

硕士毕业通关秘籍:paperzz 毕业论文智能写作工具,让学术告别焦虑

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertationhttps://www.paperzz.cc/dissertation 每一位硕士研究生都懂,毕业论文不仅是学术生涯的收官之作&…

作者头像 李华
网站建设 2026/3/14 8:01:47

收藏备用!SFT/ReFT/RLHF/DPO/PPO五大大模型微调技术全解析+对比

在大模型落地实践中,微调技术是让预训练模型适配特定任务、提升性能的核心手段。本文将系统对比分析SFT、ReFT、RLHF、DPO和PPO五种主流微调技术,拆解各自的核心逻辑、实现流程、优劣差异及适用场景,同时补充实操细节和技术关联点&#xff0c…

作者头像 李华
网站建设 2026/3/26 23:35:04

‌职业倦怠自救:2026年软件测试从业者心理健康管理指南

一、2026年测试岗位的心理新图景:不是变轻松了,而是更隐蔽了‌ 2026年,软件测试不再是“点点点”的重复劳动。AI测试助手已接管85%的回归测试、90%的UI兼容性验证、70%的接口自动化用例生成。表面上,测试工程师的“体力负担”大幅…

作者头像 李华