config.cache 使用
官方地址:https://docs.pytest.org/en/8.0.x/reference/reference.html#config-cache
在 pytest 中,cache 是一个非常有用的功能,它允许你在测试会话之间持久化状态。这意味着你可以在一次测试运行中存储一些值,并在后续的测试运行中访问这些值。这对于需要重用昂贵的计算结果或避免重复执行时间密集型操作的场景特别有用。
如何使用 cache
cache 对象通过 pytest 的 FixtureRequest 对象提供,通常在一个 fixture 中获取并返回它
@fixture
def cache(request: FixtureRequest) -> Cache:
"""Return a cache object that can persist state between testing sessions.
cache.get(key, default)
cache.set(key, value)
Keys must be ``/`` separated strings, where the first part is usually the
name of your plugin or application to avoid clashes with other cache users.
Values can be any object handled by the json stdlib module.
"""
assert request.config.cache is not None
return request.config.cache
是一个本地缓存,并且是存储到了本地的 .pytest_cache 文件夹中,一个key 一个文件
存储和检索数据
cache 对象提供了两个主要方法:get 和 set。
get(key, default=None)方法用于检索之前存储的值。如果指定的key不存在,则返回default值。set(key, value)方法用于存储值。key应该是一个字符串,而value可以是任何可以被json标准库模块处理的对象。
键应该使用 / 分隔的字符串,其中第一部分通常是你的插件或应用程序的名称,以避免与其他使用 cache 的代码冲突。
示例
假设你有一个测试,需要从外部API获取数据,但这个操作很耗时。你可以在第一次运行测试时从API获取数据,并将其存储在 cache 中。在后续的测试运行中,你可以直接从 cache 中检索数据,避免重复的API调用。
def test_external_api(cache):
# 尝试从缓存中获取数据
data = cache.get('external_api/data', default=None)
if data is None:
# 如果缓存中没有数据,则从API获取并存储到缓存中
data = fetch_data_from_external_api() # 假设这是一个函数来获取数据
cache.set('external_api/data', data)
# 使用数据进行测试
assert data is not None
注意事项
cache在 CI 环境中可能不会像预期那样工作,因为每次构建可能使用全新的环境。- 使用
cache时要小心避免过度依赖它,确保测试仍然可以独立运行而不是依赖于先前的测试结果。 - 清晰地命名你的缓存键,以避免潜在的冲突和混淆。
通过合理使用 pytest 的 cache 功能,可以显著提高测试效率,特别是在处理需要大量计算资源的测试时。
config.cache 使用的更多相关文章
- 源码解读 Laravel PHP artisan config:cache
来源 https://laravel-china.org/articles/5101/source-code-reading-laravel-php-artisan-configcache 源码在哪 ...
- 在进行make之前,configure的时候,请先清理config.cache
在进行make之前,configure的时候,请先清理config.cache
- dedecms 后台修改系统设置,但是config.cache.inc.php文件不能写入
fopen居然返回false,既不是目录或文件权限相关问题,也不是文件路径问题(相对路径.绝对路径)等,更不是打开文件的模式问题(r,w,a等).网上搜了一会,说到返回false的原因无非都是上面三种 ...
- Ehcache(2.9.x) - Configuration Guide, Configuring Cache
About Ehcache Configuration Ehcache supports declarative configuration via an XML configuration file ...
- records.config文件参数解释
# Process Records Config File # # <RECORD-TYPE> <NAME> <TYPE> <VALUE (till end ...
- records.config文件配置模板
# # # Process Records Config File # # <RECORD-TYPE> <NAME> <TYPE> <VALUE (till ...
- laravel config 配置无效
修改了配置文件config 发现逻辑代码中并无生效. 猜测缓存,所以执行下: php artisan config:cache 缓存文件默认会存在bootstrap/cache 中,并不在stora ...
- 深入理解 Laravel 中 config 配置加载原理
Laravel的配置加载其实就是加载config目录下所有文件配置.如何过使用php artisan config:cache则会把加载的配置合并到一个配置文件中,下次请求就不会再去加载config目 ...
- [Laravel] 11 - WEB API : cache & timer
前言 一.资源 Ref: https://www.imooc.com/video/2870 二.缓存 缓存:静态缓存.Memcache.redis缓存 Ref: [Laravel] 09 - Func ...
- records.config中文详解
转载:http://www.safecdn.cn/cdn/2018/12/records-config-zh/106.html records.config参数的一些备注 CONFIG proxy.c ...
随机推荐
- 解决highlightjs中纯文本被解析成HTML无法展示的问题,记一次工作中bug修复的思考
壹 ❀ 引 在本周迭代bug修复工作中,遇到了两个比较头疼的bug(同一个客户所提),bug问题描述也很奇怪,客户表示产品的富文本编辑器里的代码块功能,在纯文本语言模式下贴特定代码进去有的看不见,有的 ...
- 【Unity3D】激光灯、碰撞特效
1 需求描述 本文将模拟激光灯(或碰撞)特效,详细需求如下: 从鼠标位置发射屏幕射线,检测是否与物体发生碰撞 当与物体发生碰撞时,在物体表面覆盖一层激光灯(或碰撞)特效 本文代码见→激光灯.碰 ...
- Java设计模式-迭代器模式Iterator
介绍 根据GoF的定义,迭代器模式提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法.这是一种行为设计模式. 顾名思义,迭代器有助于以定义的方式遍历对象集合,这对客户端应用程序很有用.在迭代期间 ...
- oracle sqlplus命令详解(官方示例)
以为内容选自Oracle官方文档,只讲command-line: 规范:<变量名> , {举例} , a | b 枚举可选值,(XX)描述 ------------------------ ...
- 麒麟系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.8.1,并配置编译测试Demo
前言 本篇紧接上一篇,上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试. QtCreator ...
- Kotlin 协程二 —— 通道 Channel
目录 一. Channel 基本使用 1.1 Channel 的概念 1.2 Channel 的简单使用 1.3 Channel 的迭代 1.4 close 关闭 Channel 1.5 Channe ...
- 腾讯云视频转码回调 http code 405
异常信息 405 Method Not Allowed 异常场景 通过腾讯云SDK上传视频,视频转码完成回调我的接口失败,我这边一直没有log.找到腾讯云工作人员,告诉我这边返回405错误和不支持ge ...
- 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(下篇)
在上一篇[1]中,我们通过 NetworkX 和 Gephi 展示了<权力的游戏>中的人物关系.在本篇中,我们将展示如何通过 NetworkX 访问图数据库 Nebula Graph. N ...
- linux复习基础命令
Linux基础命令 学习目标 了解vm备份的两种方式 了解快照和克隆的区别 了解linux系统文件 掌握基础命令 指定vmtools的作用 1 vm两种备份方式 为什么要进行备份 保证centos操作 ...
- Codeforces Round 924 (Div. 2)B. Equalize(思维+双指针)
目录 题面 链接 题意 题解 代码 题面 链接 B. Equalize 题意 给一个数组\(a\),然后让你给这个数组加上一个排列,求出现最多的次数 题解 赛时没过不应该. 最开始很容易想到要去重,因 ...