gpt4 book ai didi

python-2.7 - 在测试中 mock sleep

转载 作者:行者123 更新时间:2023-12-01 23:46:18 24 4
gpt4 key购买 nike

我有一个要测试的函数,它最终会调用另一个函数,其中有一些 time.sleep 函数。我不想让我的测试休眠。所以,我的问题是,是模拟测试函数更好,还是包装我对函数的调用以使用补丁进行测试?

示例 1

@patch('time.sleep')
def test_some_function(mock_time):
data = some_sleepy_function()
assert data == expected_data

示例 2:

def test_some_function():
@patch('time.sleep')
def run_function(mock_sleep):
return some_sleepy_function()
assert run_function() == expected_data

最佳答案

要模拟像 time.sleep 这样简单的东西,我会使用 py.test 的 monkeypatch:

def test_some_function(monkeypatch):
monkeypatch.setattr(time, 'sleep', lambda s: None)
data = some_sleepy_function()
assert data == expected_data

如果您将测试分组到一个类中:

class Test:

def test_some_function(self, monkeypatch):
monkeypatch.setattr(time, 'sleep', lambda s: None)
data = some_sleepy_function()
assert data == expected_data

请注意,这仅对“标准”pytest 类(不是 unittest.TestCase 子类)有效。

在我看来,将 mock.patch 作为装饰器与 pytest 一起使用是令人困惑的,因为 py.test 的固定装置作为参数传递给测试函数。

关于python-2.7 - 在测试中 mock sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com