在unittest中模拟整个python类时无法引发异常
以下是原始类:在unittest中模拟整个python类时无法引发异常,python,unit-testing,mocking,pytest,Python,Unit Testing,Mocking,Pytest,以下是原始类: class Original(object): def __ init__(self, path): self.xml = None self.path = path self.convert() # <----- I can't modify anything in my class def convert(self): #some code here self.xml =
class Original(object):
def __ init__(self, path):
self.xml = None
self.path = path
self.convert() # <----- I can't modify anything in my class
def convert(self):
#some code here
self.xml = external_api_call # <------------this generates objects for this property
self.transform()
def transform(self):
#some code
if not self._xml:
raise Exception('None value')
for project in self.xml.projects:
try:
value = getattr(project, "name")
except AttributeError:
raise Exception('AttributeError')
print('Yes it worked')
它应该生成一个异常,但不会。我还尝试了不同的方法,例如模拟对象的副作用特性
mock_object._xml.return_value
不要修补
Original
,只修补外部api调用,比如使用mock.patch(“something.external\u api\u call”,lamda*args,**kws:None):
mock_object._xml.return_value
@patch('something.Original')
def test_case_1(Original):
Original.xml.side_effect = Exception()
Original.transform()