在 Python 中使用 h5py 返回字典进行模拟
Mocking with h5py returning dictionary in Python
我在函数中有以下内容:
import h5py
with h5py.File(path, 'r') as f:
big = f['big']
box = f['box']
我目前正在为尝试模拟它的函数编写测试
通过类似的东西:
def test_function(mocker):
mocker.patch("h5py.File", new=mocker.mock_open())
...
嘲笑者来自哪里:https://pypi.org/project/pytest-mock/
我想要实现的是 mock 到 return 我一个 dict 的 [=26] =]f 这样我就可以与它进行交互,例如在上面的函数中。
这可能吗,我准备使用任何可能的暴力解决方案...
br。
KJ
如所述,您需要确保 h5py.File().__enter__()
returns 的结果是一个合适的字典:
from unittest import mock
import h5py
import pytest
def foo():
with h5py.File('.', 'r') as f:
big = f['big']
box = f['box']
return big, box
def test_foo(mocker):
d = {'big': 1, 'box': 2}
m = mocker.MagicMock()
m.__enter__.return_value = d
mocker.patch("h5py.File",
return_value=m)
assert foo() == (1,2)
我在函数中有以下内容:
import h5py
with h5py.File(path, 'r') as f:
big = f['big']
box = f['box']
我目前正在为尝试模拟它的函数编写测试 通过类似的东西:
def test_function(mocker):
mocker.patch("h5py.File", new=mocker.mock_open())
...
嘲笑者来自哪里:https://pypi.org/project/pytest-mock/
我想要实现的是 mock 到 return 我一个 dict 的 [=26] =]f 这样我就可以与它进行交互,例如在上面的函数中。
这可能吗,我准备使用任何可能的暴力解决方案...
br。 KJ
如h5py.File().__enter__()
returns 的结果是一个合适的字典:
from unittest import mock
import h5py
import pytest
def foo():
with h5py.File('.', 'r') as f:
big = f['big']
box = f['box']
return big, box
def test_foo(mocker):
d = {'big': 1, 'box': 2}
m = mocker.MagicMock()
m.__enter__.return_value = d
mocker.patch("h5py.File",
return_value=m)
assert foo() == (1,2)