One*_*ece 5 python function pytest python-3.x
def func1():
return 5
def func2(param1, param2):
var1 = func1()
return param1 + param2 + var1
Run Code Online (Sandbox Code Playgroud)
我想使用 pytest 通过模拟第一个函数来测试第二个函数,但我不知道如何执行此操作。
@pytest.fixture(autouse=True)
def patch_func1(self):
with mock.patch(
"func1",
return_value= 5,
) as self.mock_func1:
yield
Run Code Online (Sandbox Code Playgroud)
我认为可以通过上面的依赖注入和固定装置来完成,但这意味着更改 func1 ,而我不想这样做。
你不需要改变任何东西。
您可以使用mocker固定装置pytest(需要安装pytest-mock)。不用担心争论mocker,它会神奇地发挥作用。
def test_func2(mocker):
mocked_value = 4
first = 1
second = 2
func1_mock = mocker.patch("func1")
func1_mock.return_value = mocked_value
actual_value = func2(first, second)
assert actual_value == first + second + mocked_value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13076 次 |
| 最近记录: |