2015-10-26 43 views
1

lib/thing.pyPython unittest mock:通过参数化类对象嘲笑类函数?

class Class(object): 
    def class_function1(self): 

app/thing.py

def function2(class_object): 
    class_object.class_function1() 

test/test_thing.py,我想修补lib.thing.Class.class_function1当函数2是带一个嘲笑类()对象募集的AttributeError这应该只是PERC了到test_function2畅通无阻。像这样的东西(不起作用):

def test_function2(self): 
    mocked_class = mock.MagicMock(name="class", spec_set=lib.thing.Class) 
    with assertRaises(AttributeError): 
     with patch ('lib.thing.Class.class_function1', side_effect=AttributeError): 
      function2(mocked_class) 
+0

删除补丁,只是设置'mocked_class.class_function1.side_effect = AttributeError'正确地提出了一个'AttributeError'时'class_function1'在'function2'被击中,但'assertRaises'不承认它。嗯。向旁边靠近一步或向旁边走一步...... – kiminoa

回答

1

我完全丢弃了补丁,并且在模拟类对象中使用了side_effect。

def test_function2(class_object): 
    mocked_class = mock.MagicMock(name="class", spec_set=lib.thing.Class) 
    mocked_class.class_function1.side_effect = AttributeError("sorry for the pseudo code") 
    with assertRaises(AttributeError): 
     function2(mocked_class)