fel*_*ice 5 pytest pytest-mock
pytest-mock 修补未按预期工作。我的代码:
utils.py:
def my_func():
return 42
Run Code Online (Sandbox Code Playgroud)
classes.py:
from utils import my_func
class MyClass:
def class_method(self):
return my_func()
Run Code Online (Sandbox Code Playgroud)
test_classes.py:
import pytest
from classes import MyClass
def test_myclass(mocker):
mocker.patch("utils.my_func", return_value=21)
assert MyClass().class_method() == 21
Run Code Online (Sandbox Code Playgroud)
失败了,返回的是42而不是21。
fel*_*ice 12
解决方案是更改测试中的补丁。代替
mocker.patch("utils.my_func", return_value=21)
Run Code Online (Sandbox Code Playgroud)
写
mocker.patch("classes.my_func", return_value=21)
Run Code Online (Sandbox Code Playgroud)
因为classes.py:中的这一行from .utils import my_func。
| 归档时间: |
|
| 查看次数: |
2162 次 |
| 最近记录: |