【Pytest】结构介绍

1.目录结构介绍

project_root/
│
├── tests/           # 测试用例存放目录
│   ├── __init__.py
│   ├── test_module1.py
│ 
├── module1.py       # 被测试的模块
├── conftest.py      # pytest配置文件,可定义fixture和钩子函数
├── pytest.ini       # pytest全局配置文件
└── run.py           # 运行测试的脚本

2. pytest.ini

pytest.ini 是 pytest 测试框架的配置文件,它允许你对 pytest 的行为进行全局或项目级别的定制。
作用
全局配置:借助 pytest.ini 文件,你可以为整个项目设定通用的配置选项,从而避免在每次运行 pytest 时都要在命令行输入相同的参数。
提高可维护性:把配置信息集中存放在一个文件里,能让项目的配置更加清晰,便于维护和管理。
定制测试行为:可以自定义测试发现规则、指定插件、设置日志级别等,以满足不同项目的特定需求。

addopts

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

[pytest]
addopts = -v -s

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

testpaths

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

[pytest]
testpaths = tests

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

norecursedirs

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

[pytest]
norecursedirs = .git venv

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

3.conftest.py

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

  1. 共享 Fixture 函数
    Fixture 是 pytest 里用于提供测试数据、初始化测试环境等的可复用函数。在 conftest.py 里定义的 Fixture 函数能够被同目录及其子目录下的所有测试文件使用,无需在每个测试文件中重复定义。
    Fixture 函数可以有参数,并且可以设置作用域(如 function、class、module、session)
# conftest.py
import pytest@pytest.fixture(scope="module")
def db_connection():# 模拟数据库连接print("建立数据库连接")yield  # 在此处执行测试用例print("关闭数据库连接")
  1. 自定义钩子函数
    钩子函数是 pytest 提供的一些特殊函数,能在测试执行的不同阶段插入自定义逻辑。在 conftest.py 里定义钩子函数可对 pytest 的默认行为进行修改。
# conftest.py
import pytestdef pytest_sessionstart(session):"""在测试会话开始时执行"""print("测试会话开始")def pytest_sessionfinish(session, exitstatus):"""在测试会话结束时执行"""print("测试会话结束")
  1. 也可以 在这里,全局配置和初始化
    可在 conftest.py 中进行一些全局配置和初始化操作,例如设置日志、加载配置文件等,让所有测试文件都能使用这些配置。
    注意事项
    conftest.py 文件不需要手动导入,pytest 会自动发现并加载它。
    不同目录下的 conftest.py 文件有不同的作用范围,子目录下的 conftest.py 文件会覆盖父目录中同名的配置。
    合理使用 Fixture 的作用域,避免不必要的资源浪费。

4.run.py

  1. 统一测试入口
    在大型项目里,测试用例可能分布在多个不同的目录和文件中。借助 run.py 文件,你可以把所有测试的启动逻辑集中起来,让测试的执行更加统一和便捷。开发人员或测试人员只需运行这个文件,就能启动整个项目的测试流程。
  2. 定制测试运行参数
    run.py 文件允许你根据不同的需求定制 pytest 的运行参数,例如指定测试文件、设置测试报告路径、控制测试的详细程度等。
import pytestif __name__ == "__main__":# 只运行 tests 目录下的测试用例,并生成 HTML 报告pytest.main(['-v', '-s', '--html=report.html', 'tests'])

在上述代码中:
-v 表示以详细模式运行测试,会输出更多的测试信息。
-s 表示捕获标准输出,允许测试用例中的 print 语句正常输出。
–html=report.html 表示生成一个名为 report.html 的 HTML 测试报告。
tests 表示只运行 tests 目录下的测试用例。

  1. 执行测试前的预处理操作
    在 run.py 文件中,你可以添加一些测试前的预处理操作,比如初始化测试环境、加载配置文件、启动服务等。类似于conftest.py作用
  2. 执行测试后的清理操作
    同样,你也可以在 run.py 文件中添加测试后的清理操作,如关闭服务、删除临时文件等,确保测试环境恢复到初始状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7023.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI导航工具我开源了利用node爬取了几百条数据

序言 别因今天的懒惰,让明天的您后悔。输出文章的本意并不是为了得到赞美,而是为了让自己能够学会总结思考;当然,如果有幸能够给到你一点点灵感或者思考,那么我这篇文章的意义将无限放大。 背景 随着AI的发展市面上…

Android Studio打包APK

1.导出APK安装包 如果是首次打包,Create new 单击蓝色对话框右边文件夹📂图标 ,选择密钥保存路径,然后在下方File name对话框中填写您想要名称,再点击OK回到密钥创建对话框。 在此对话框中填写密码(Passwo…

ssh密钥登录GitHub时一直提示“Error: Permission denied (publickey)”

起因 环境:Windows10 背景:之前就是按照官方说明创建个rsa密钥,在git后台添加上,就行了,近期怎么添加怎么失败,总是“Error: Permission denied (publickey)”的提示! 尝试 各种尝试&#xf…

【玩转全栈】----Django连接MySQL

阅前先赞,养好习惯! 目录 1、ORM框架介绍 选择建议 2、安装mysqlclient 3、创建数据库 4、修改settings,连接数据库 5、对数据库进行操作 创建表 删除表 添加数据 删除数据 修改(更新)数据: 获取数据 1、OR…

软件质量与测试报告5-压力测试 JMeter 与 Badboy

A.百度搜索引擎压力测试 通过在Badboy下执行如下的测试场景来生成压力测试的脚本: a) 在Badboy的地址栏里面输入www.baidu.com,回车; b) 在右下区域打开的百度的主页上输入搜索关键字JMeter,回车; c) 在…

vim如何显示行号

:set nu 显示行号 :set nonu 不显示行号 (vim如何使设置显示行号永久生效:vim如何使相关设置永久生效-CSDN博客)

Python Typing: 实战应用指南

文章目录 1. 什么是 Python Typing?2. 实战案例:构建一个用户管理系统2.1 项目描述2.2 代码实现 3. 类型检查工具:MyPy4. 常见的 typing 用法5. 总结 在 Python 中,静态类型检查越来越受到开发者的重视。typing 模块提供了一种方式…

Linux的基本指令(上)

1.ls指令 语法:ls [选项] [目录或文件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。 常用选项: -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。 -d 将…

【数据分享】1929-2024年全球站点的逐日平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…

算法每日双题精讲 —— 二分查找(山脉数组的峰顶索引,寻找峰值)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧💪 在算法的…

macOS如何进入 Application Support 目录(cd: string not in pwd: Application)

错误信息 cd: string not in pwd: Application 表示在当前目录下找不到名为 Application Support 的目录。可能的原因如下: 拼写错误或路径错误:确保你输入的目录名称正确。目录名称是区分大小写的,因此请确保使用正确的大小写。正确的目录名…

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后,确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动,然后安装了 64位 LabVIEW,需要确保为 64位 LabVIEW 安装和配置适当的驱动程序,才能正常访问硬件设备。以下是详细步骤&#xff1a…

《Memory Barriers a Hardware View for Software Hackers》阅读笔记

CPU 设计者引入内存屏障(memory barriers)是为了应对在多处理器系统(SMP)中,内存引用重排序可能导致的同步问题。尽管重排序可以提高性能,但在某些情况下(如同步原语),正…

ES设置证书和创建用户,kibana连接es

1、启动好es 2、进入es容器 docker exec -it es /bin/bash 3、生成ca证书 ./bin/elasticsearch-certutil ca 注:两个红方框位置直接回车 4、生成cert证书 ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 注:前两个红框直接回车&am…

【安当产品应用案例100集】034-安当KSP支持密评中存储数据的机密性和完整性

安当KSP是一套获得国密证书的专业的密钥管理系统。KSP的系统功能扩展图示如下: 我们知道商用密码应用安全性评估中,需要确保存储的数据不被篡改、删除或者破坏,必须采用合适的安全方案来确保存储数据的机密性和完整性。KSP能否满足这个需求呢…

STM32项目分享:智能厨房安全检测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能厨房安全检测系统 (资料分…

Poetry shell --> poetry-plugin-shell

当前环境:Poetry (version 2.0.1) python Python 3.11.8 根据:https://python-poetry.org/docs/managing-environments/#bash-csh-zsh 在新版本的 poetry 执行 poetry shell 会报错 这个功能目前需要使用 poetry-plugin-shell 插件 关于 poetry-plugin-s…

第84期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

【JavaEE进阶】Spring留言板实现

目录 🎍预期结果 🍀前端代码 🎄约定前后端交互接口 🚩需求分析 🚩接口定义 🌳实现服务器端代码 🚩lombok介绍 🚩代码实现 🌴运行测试 🎄前端代码实…

基于SpringBoot格式化实体的时间类型以及静态注入依赖

一. 场景描述 在进行前后端交互时,发现实体的LocalDateTime返回的格式是这样的: 这不符合我们日常习惯的格式 “年-月-日 时:分:秒”,于是上网学习了前辈 励碼的文章SSM项目中LocalDateTime格式化最佳实践_localdatetime 格式化-CSDN博客解决…