我的代码相当简单,但我不明白发生了什么:
class MyDb :
def some_func( arg ) :
....
我的测试代码是:
@mock.patch(mypkg.mydb)
@pytest.mark.parametrize( func_dummy_value ) :
( [ { "id" : 1234 } ] )
def test_simple ( mock_db , dummy_value ) :
mock_db.some_func.return_value = dummy_value
所以从我称之为我的确如此:
db = MyDb()
print db
print db.some_func()
我期待最后一个打印我在运行测试时给出的虚拟值。相反,我得到:
<MagicMock name='MyDb()' id='140018446236496'>
<MagicMock name='MyDb().some_func()' id='140018443991696'>
我错过了什么?
答案 0 :(得分:1)
some_func
是一个实例方法,因此它在MyDb的实例上调用,而不是类本身。实例是调用类的返回值。因此,在修补时需要牢记这一点。
mock_db.return_value.some_func.return_value = dummy_value