pytest 常用的辅助函数和工具函数

news2024/9/20 5:22:15

pytest 常用的辅助函数和工具函数示例

# @File: my_module.py


def fetch_data():
    return 'process data'

def process_data():
    data = fetch_data()
    return data.upper()
import logging
import sys
import pytest

#01-------------------------------@pytest.fixture,sample_data 在测试函数中被调用,以提供必要的测试准备工作或资源
@pytest.fixture
def sample_data():
    arr = [1,2,3]
    return arr


def test_data(sample_data):
    res = sample_data[0]
    assert res == 1



#02-------------------------------pytest.raises 测试代码是否引发了预期的异常
def test_raise_divide():
    with pytest.raises(ZeroDivisionError):
        1 / 0


#03-------------------------------@pytest.mark.xfail 用于标记预期会失败的测试,测试失败不会影响整体测试结果
@pytest.mark.xfail
def test_expect_fail():
    assert 1 == 2
''' 
#04-------------------------------import pdb; pdb.set_trace() 用于在测试中插入断点,方便调试
def test_debug():
    ## import pdb; pdb.set_trace()
    assert 1 == 1
'''

#05-------------------------------@pytest.mark.usefixtures("setup_1", "setup_2")  在测试函数中应用多个夹具
@pytest.fixture
def setup_1():
    print('fixture 1')

@pytest.fixture
def setup_2():
    print('fixture 2')

@pytest.mark.usefixtures("setup_1", "setup_2")
def test_with_mul_fixtures():
    assert 1== 1

#06-------------------------------@pytest.mark.timeout  设置测试的超时时间,避免测试运行过长时间
@pytest.mark.timeout(1)
def test_long_running():
    import time
    time.sleep(2)

#07-------------------------------@pytest.mark.filterwarnings  用于过滤警告信息,控制哪些警告被显示或忽略
@pytest.mark.filterwarnings("ignore::UserWarning")
def test_ignore_warning():
    import warnings
    warnings.warn("This is a warning", UserWarning)


#08------------------------------ pytest.config  用于获取或修改 pytest 配置,虽然在较新版本中通常使用 pytest 插件系统替代
def test_config():
    config = pytest.config
    assert config.option.verbose

#09------------------------------@pytest.mark.order()控制测试的执行顺序(需要 pytest-order 插件)
@pytest.mark.order(1)
def test_first():
    assert 1==1

@pytest.mark.order(2)
def test_second():
    assert 1==1


#10------------------------------pytest.capture 的 caplog 用于捕获日志输出并进行断言
def test_logging(caplog):
    logger = logging.getLogger('test_logger')
    logger.warning('this is a warning')
    assert 'this is a warning' in caplog.text

#11------------------------------pytest.fixture 的 autouse,  自动使用夹具,而无需在测试函数中显式声明
@pytest.fixture(autouse=True)
def auto_fixture():
    print('this runs before each test')

def test_example():
    assert True

#12------------------------------pytest.mark.skipif 在特定条件下跳过测试
@pytest.mark.skipif(sys.platform=='win64', reason='Requires Unix-like OS')
def test_unix_only_feature():
    assert True


#13------------------------------pytest 的 monkeypatch 用于在测试运行时动态地修改或模拟对象、方法、类等。这可以帮助你隔离测试环境、模拟依赖项,或者控制外部依赖的行为

from TestCases.ModelG.my_module import process_data

def mock_fetch_data():
    return 'mock data'

def test_process_data(monkeypatch):
    # 使用 monkeypatch 来模拟 fetch_data 函数
    monkeypatch.setattr("TestCases.ModelG.my_module.fetch_data",mock_fetch_data)
    res = process_data()
    assert res == 'MOCK DATA'

 

test_data.py::test_data 
test_data.py::test_raise_divide 
test_data.py::test_expect_fail 
test_data.py::test_with_mul_fixtures 
test_data.py::test_long_running 
test_data.py::test_ignore_warning 
test_data.py::test_config 
======= Global initialization =======
this runs before each test
PASSED                                           [  7%]this runs before each test
PASSED                                   [ 15%]this runs before each test
XFAIL                                     [ 23%]
@pytest.mark.xfail
    def test_expect_fail():
>       assert 1 == 2
E       assert 1 == 2

test_data.py:35: AssertionError
this runs before each test
fixture 1
fixture 2
PASSED                              [ 30%]this runs before each test
PASSED                                   [ 38%]this runs before each test
PASSED                                 [ 46%]this runs before each test
FAILED                                         [ 53%]
TestCases\ModelG\test_data.py:69 (test_config)
def test_config():
>       config = pytest.config
E       AttributeError: module 'pytest' has no attribute 'config'

test_data.py:71: AttributeError
this runs before each test
PASSED                                          [ 61%]this runs before each test
PASSED                                         [ 69%]this runs before each test
PASSED                                        [ 76%]this runs before each test
PASSED                                        [ 84%]this runs before each test
PASSED                              [ 92%]this runs before each test
PASSED                                   [100%]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 下的 XML 文件(概念理解、存储位置理解)

一、XML 1、XML 概述 XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言 类似于 HTML,但旨在传输和存储数据,而不是显示数据,且基本语法都是标签 2、XML 的特点 &am…

【2024数模国赛赛题思路公开】国赛B题思路丨附可运行代码丨无偿自提

2024年国赛B题解题思路 问题 1: 抽样检测方案设计 【题目分析】 分析: 目标是设计一个高效的抽样检测方案,在尽量少的样本数量下,确保在高信度水平下做出正确的接受或拒收决策。需要处理两个不同的信度要求,这对样本量的计算提…

解决matplotlib中文乱码最简单方案

解决matplotlib中文乱码问题方案众多,我认为如下方案是最简单的一个。 1、从电脑中搜索simhei字体,如下示意图是mac检索结果,或者直接搜索simhei.ttf下载字体 拷贝到指定路径:/path/to/mex/simhei.ttf 2、matplotlib 加载字体 …

【Git】本地仓库操作

Part1 基础概念 git作用:管理代码版本,记录,切换,合并代码 git仓库:记录文件状态内容和历史记录的地方(.git文件夹) git的三个区域:1)工作区:实际开发时的文…

针对STM32串口输出乱码错误问题

STM32在通过printf打印到串口时出现的文字乱码问题 使用printf文件中main.c文件,检查文件的编码方式是否正确,如下图所示,选择Chinese GD2编码方式:Edit--》Configuration 检查串口输出还是乱码错误 可以检测所建文件夹中main.c…

大道至简,大厂官网基本都走简洁化设计路线。

「大道至简」是一种设计理念,强调设计应该追求简洁、直观、易用,而不是过多的修饰和繁琐的细节。 对于大厂的官网来说,简洁化设计路线的选择可能有以下几个原因: 1. 更好的用户体验: 简洁的设计可以让用户更容易地理…

【Python报错已解决】`EOFError: Ran out of input`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述:1.1 报错示例:1.2 报错分析:1.3 解决思路&#xff…

LM Studio 本地部署大模型Qwen

本人运行环境win11 、11th Gen Intel Core™ i7-11800H 2.30GHZ、NVIDIA GeForce RTX 3060 Laptop GPU LMStudio 运行环境要求 What are the minimum hardware / software requirements? Apple Silicon Mac (M1/M2/M3) with macOS 13.6 or newerWindows / Linux PC with a…

【区块链 + 人才服务】链节区块链教学管理平台 | FISCO BCOS应用案例

当前,政策支持和行业需求为“区块链 教育”的发展提供了机遇。政策方面,教育部于 2020 年发布了《高等学 校区块链技术创新行动计划》,提出到 2025 年,在高校布局建设一批区块链技术创新基地,培养汇聚一批区块 链技术…

打卡第五十七天:prim与kruskal算法

题目 一、prim 本题是最小生成树的模板题。最小生成树 可以使用 prim算法 也可以使用 kruskal算法计算出来。 最小生成树是所有节点的最小连通子图, 即:以最小的成本(边的权值)将图中所有节点链接到一起。 图中有n个节点&…

从零到精通:用C++ STL string优化代码

目录 1:为什么要学习string类 2:标准库中的string类 2.1:string类(了解) 2.2:总结 3:string类的常用接口 3.1:string类对象的常见构造 3.1.1:代码1 3.1.2:代码2 3.2:string类对象的遍历操作 3.2.1:代码1(begin end) 3.2.2:代码2(rbegin rend) 3.3:string类对象的…

ESD防静电监控系统助力电子制造行业转型升级

在电子制造行业中,静电危害不容小觑。ESD 防静电监控系统的出现,为行业转型升级带来强大助力。电子元件对静电极为敏感,微小的静电放电都可能损坏元件,影响产品质量。ESD 防静电监控系统能够实时监测生产环境中的静电状况&#xf…

Python制作爱心跳动代码,这就是程序员的烂漫吗

最近有个剧挺火的 就是那个程序员的剧,叫什么温暖你来着 咳咳,剧我没怎么看,但是吧,里面有个爱心代码,最近可是蛮火的,今天就用Python来尝试一下吧 怎么说呢,用这个表白也可以的,万…

计算机网络(运输层)

运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时&a…

数量多怎么打印最便宜?

当您面临大量文件需要打印时,如何找到既经济又高效的打印解决方案成为关键。在众多打印服务中,琢贝云打印凭借其显著的价格优势和服务特色,成为众多用户的首选。 极致低价,成本更低 黑白打印超低价:提供的黑白打印服…

照明风暖浴霸语音控制芯片,智能声控开关芯片方案NRK3301

照明风暖浴霸通过特制的防水红外线热波管,与换气扇的巧妙组合,将浴室的取暖、红外线理疗、浴室换气、装饰等多种功能结合于一体的浴用小家电产品;为了提升产品的卖点,许多厂商都在尝试加各色各样的功能,某厂家加入了NR…

分销--分销人员管理系统架构文档

1. 概述 1.1 目的 本系统架构文档旨在描述分销人员管理系统的整体设计与结构,明确系统的功能模块、流程和技术实现,确保系统能够有效支持分销员的招募、管理及监督。 1.2 范围 本文档涵盖了分销员招募与管理。包括分销员列表、招募流程等。 2. 系统…

基于人工智能的垃圾分类图像识别系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着全球环境保护意识的增强,垃圾分类逐渐成为城市治理的关键任务之一。通过人工智能技术,尤其是图像识别系统…

Ascend C算子性能优化实用技巧03——搬运优化

Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C标准规范,兼具开发效率和运行性能。使用Ascend C,开发者可以基于昇腾AI硬件,高效的实现自定义的创新算法。 目前已经有越来越多的开发者使用Ascend C,我们…

java控制流程

1.块作用域 用一对大括号括起来的就是一个块,块确定了变量的作用域。一个块可以嵌套在另一个块中。块外的变量在块内有效,而块内的变量在块外无效。 public class Main{public static void main(String[] args){int i1;{System.out.println("i&qu…