当我使用模拟库时,例如[fl]ad[giny]+[\sbrug!]+
一切正常,但当我使用像with mock.patch('os.path.join'):
这样的pytest-mock时,如果断言失败,我会收到以下错误:
似乎pytest尝试使用'os.path'模块,但是因为它是用mocker修补的,它会失败并引发错误,我做错了什么?
mocker.patch('os.path.join')
答案 0 :(得分:2)
模拟或者更确切地说单元测试os.path.join你可以使用monkeypatch,因为你已经在使用py.test例如source
# content of test_module.py
import os.path
def getssh(): # pseudo application code
return os.path.join(os.path.expanduser("~admin"), '.ssh')
def test_mytest(monkeypatch):
def mockreturn(path):
return '/abc'
monkeypatch.setattr(os.path, 'expanduser', mockreturn)
x = getssh()
assert x == '/abc/.ssh'