缓存 fixture 函数结果 Pytest
Cache fixture function result Pytest
我有一系列 python 测试来测试两个数据帧的相等性:
@pytest.fixture()
def prepare_data():
(...)
(time-consuming operations running on a cloud instance)
return df1, df2
test_columns_are_equal(prepare_data):
assert prepare_data[0].columns == prepare_data[1].columns
test_schemas_are_equal(prepare_data):
assert prepare_data[0].dtypes.equals(prepare_data[1].dtypes)
test_something_else(prepare_data):
assert(...)
现在的问题是 prepare_data 正在为每个测试重新 运行,并在我的服务器上触发大量操作。
我想要的是在第一次调用时缓存 prepare_data() 的结果,然后 运行 缓存输出上的测试。
迟到总比不到好,@pytest.fixture(scope='module')
只会为整个模块生成一次固定装置,并在访问它的测试之间共享它。其他场景还有'class'、'session'和'package'的作用域
注意:请注意,如果测试用例改变了夹具,那么您将遇到意外的测试行为,具体取决于执行的测试集合和执行顺序。这就是默认为每个测试用例单独生成夹具的原因。
参见 pytest fixture 文档的范围会话。
https://docs.pytest.org/en/latest/reference/reference.html#pytest.fixture
我有一系列 python 测试来测试两个数据帧的相等性:
@pytest.fixture()
def prepare_data():
(...)
(time-consuming operations running on a cloud instance)
return df1, df2
test_columns_are_equal(prepare_data):
assert prepare_data[0].columns == prepare_data[1].columns
test_schemas_are_equal(prepare_data):
assert prepare_data[0].dtypes.equals(prepare_data[1].dtypes)
test_something_else(prepare_data):
assert(...)
现在的问题是 prepare_data 正在为每个测试重新 运行,并在我的服务器上触发大量操作。
我想要的是在第一次调用时缓存 prepare_data() 的结果,然后 运行 缓存输出上的测试。
迟到总比不到好,@pytest.fixture(scope='module')
只会为整个模块生成一次固定装置,并在访问它的测试之间共享它。其他场景还有'class'、'session'和'package'的作用域
注意:请注意,如果测试用例改变了夹具,那么您将遇到意外的测试行为,具体取决于执行的测试集合和执行顺序。这就是默认为每个测试用例单独生成夹具的原因。
参见 pytest fixture 文档的范围会话。 https://docs.pytest.org/en/latest/reference/reference.html#pytest.fixture