我正在尝试模拟一个简单的函数,但我收到一个 AttributeError 并且不知道如何修复它。
def my_function():
return "original"
def mock_my_function():
return "mocked"
def test_my_function(monkeypatch):
monkeypatch.setattr(__name__, 'my_function', mock_my_function)
assert my_function() == "mocked"
我应该在 __name__ 的位置放置什么才能使其正常工作?
解决方案是将要测试的函数放在不同的文件中,以便它可以充当模块。
包含要测试的函数的文件(名为original_code.py);
def my_function():
return "original"
包含测试的文件(名为 test_set.py):
import pytest
import original_code
def test_my_function(monkeypatch):
def mock_my_function():
return "mocked"
monkeypatch.setattr(original_code, 'my_function', mock_my_function)
assert original_code.my_function() == "mocked"
文件结构
|_ original_code.py
|_ test_set.py
这应该模拟名为“my_function”的函数,并在测试中定义“mock_my_function”