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

news/2025/1/15 13:54:36/

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

python"># @File: my_module.pydef fetch_data():return 'process data'def process_data():data = fetch_data()return data.upper()
python">import logging
import sys
import pytest#01-------------------------------@pytest.fixture,sample_data 在测试函数中被调用,以提供必要的测试准备工作或资源
@pytest.fixture
def sample_data():arr = [1,2,3]return arrdef 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 timetime.sleep(2)#07-------------------------------@pytest.mark.filterwarnings  用于过滤警告信息,控制哪些警告被显示或忽略
@pytest.mark.filterwarnings("ignore::UserWarning")
def test_ignore_warning():import warningswarnings.warn("This is a warning", UserWarning)#08------------------------------ pytest.config  用于获取或修改 pytest 配置,虽然在较新版本中通常使用 pytest 插件系统替代
def test_config():config = pytest.configassert 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_datadef 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.ppmy.cn/news/1522449.html

相关文章

PromptReps: 解锁LLM的检索力量

论文:https://arxiv.org/pdf/2404.18424代码:https://github.com/ielab/PromptReps机构:CSIRO、昆士兰大学、滑铁卢大学领域:retrieval、embedding model发表:arXiv 当前大型语言模型用于zero-shot文档排序的方法主要有…

文件名管理器,一款免费的文件名管理工具,支持文件整理功能

文件名管理器是一款可以批量修改文件名的工具,但是相较于其他工具又有不同。除了批量重命名功能外,软件同时提供一些特色功能:把文件名插入到文本文件中、根据文件名写入音乐ID3信息,整理下载的视频资源、音乐分类整理等。软件提供…

java当中什么是NIO

Java中的NIO(Non-blocking I/O)即非阻塞I/O,是Java 1.4中引入的一种新的I/O API,用于替代传统的I/O(即BIO, Blocking I/O)。与传统的阻塞式I/O相比,NIO提供了更高效的I/O操作,特别是…

深度学习速通系列:如何计算文本相似度

计算文本相似度是自然语言处理(NLP)中的一个常见任务,用于衡量两个文本片段在语义上的相似性或相关性。以下是一些常用的方法: 余弦相似度: 将文本转换为向量(例如,使用词袋模型或TF-IDF&#x…

SpringBoot开启多端口探究--基于多ApplicationContext

文章目录 前情提要一、思路概要二、具体实现三、其他问题父子关系部分依赖 总结 前情提要 前面探讨了management端口开启,grpc端口开启,本文继续探讨在SpringApplication中开启多个端口的方式之多ApplicationContext, 相比management端口基于多WebServe…

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。…

unity 实现吸血鬼幸存者的随机奖励

设置奖励的数据类型 // // Auto Generated Code By excel2json // https://neil3d.gitee.io/coding/excel2json.html // 1. 每个 Sheet 形成一个 Struct 定义, Sheet 的名称作为 Struct 的名称 // 2. 表格约定:第一行是变量名称,第二行是变量类型// Gen…

【Webpack】基本使用方法

📢博客主页:逆旅行天涯-CSDN博客 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 参考视频: 30 分钟掌握 Webpack_哔哩哔哩_bilibili 什么是webpack 简单来说就是一个 打包工具, 可…