python - 在pytest中重用数据结构
问题描述
我正在研究一个相当通用的 Python 数据结构,同时为每一个功能编写测试。大多数测试重新实例化相同的结构,即使用相同的值,以便可以测试特定的方法。例如:
class T():
def __init__(self, data):
self.data = data
def min(self):
return 'min'
def max(self):
return 'max'
class TestT():
def test_min():
t = T(values)
assert t.min() == 'min'
def test_max():
t = T(values)
assert t.max() == 'max'
重用这个t
实例的正确方法是什么?我才刚刚开始,测试开始需要很长时间才能执行。我想加快他们的速度。
注意:我知道我可以parametrize
并且getattr
在这个特定的示例中,但它仍然会实例化t
两次,每次测试一次。
尝试
我查看了pytest.fixtures但是似乎让一个夹具返回这t
只会做同样的事情,重新实例化它。
Pytest 缓存似乎是为此而制作的,但我从文档中不明白如何使用它(request
示例中有什么?)。
最后,仅存储t
在(类)变量中似乎并不能加快测试速度。
解决方案
看来我对 pytest 夹具的理解是不完整的。以下工作正常:
class Test():
@pytest.fixture(scope='class')
def data(self):
return ...
def test_min(data):
assert data.min() == 'min'
def test_max(data):
assert data.max() == 'max'
推荐阅读
- python - 从现有计算新列
- c# - 无法加载从 CLI 运行的 .Net Core 3.0 Web 应用程序
- c# - 使用“System.Net.Dns.GetHostEntry()”获取网站的 IP 地址,与某些在线 IP 检查器站点相比,将给出不同的结果
- webpack - 用于大型非 SPA 站点的 Webpack 配置文件,其 src 模块位于 Webpack 根目录之外,并以自己的拆分块输出模块?
- python - 尝试使用 py2neo (2.0.9) 创建一个创建 Neo4j 图形的 python 程序,但服务器拒绝让我连接到它
- neo4j - 是否可以在 Neo4j 中获取特定标签的约束列表?
- c++ - 在 C++ 初始值设定项列表中使用整数文字
- xamarin - 使用 Xamarin,如果我使用 Console.Writeline 输出在哪里,我应该改用 Debug.Writeline 吗?
- python - 如何对数据框中的值进行分组以获得更少、更通用的值
- server - Prebid 服务器不返回广告