不能用pytest-mock来模拟'os.path.join'

时间:2017-08-25 01:45:49

标签: python unit-testing

当我使用模拟库时,例如[fl]ad[giny]+[\sbrug!]+ 一切正常,但当我使用像with mock.patch('os.path.join'):这样的pytest-mock时,如果断言失败,我会收到以下错误:

似乎pytest尝试使用'os.path'模块,但是因为它是用mocker修补的,它会失败并引发错误,我做错了什么?

mocker.patch('os.path.join')

1 个答案:

答案 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'