[英]Testing class method that calls an instance variable - AttributeError
當它們使用實例變量時,如何模擬一個類以隔離地測試其方法? 這是我要測試的代碼示例。
class Employee:
def __init__(self, id):
self.id = id
self.email = self.set_email()
def set_email():
df = get_all_info()
return df[df[id] == self.id].email[0]
def get_all_info():
# ...
我的想法是模擬Employee類,然后調用set_email方法進行測試。 測試代碼:
def test_set_email(get_all_info_mock):
# ...
mock_object = unittest.mock.Mock(Employee)
actual_email = Employee.set_email(mock_object)
assert actual_email == expected_email
運行測試時,出現以下錯誤。
AttributeError:模擬對象沒有屬性“ id”
我嘗試遵循以下指示: 在python單元測試中模擬類屬性的更好方法 。 我還嘗試將模擬設置為屬性模擬,id為side_effect,id為return_value,但我似乎無法弄清楚。 我不想修補Employee類,因為目標是測試它的方法。
您需要做的就是設置id
屬性。
def test_set_email(get_all_info_mock):
# ...
mock_object = unittest.mock.Mock(id=3) # Or whatever id you need
actual_email = Employee.set_email(mock_object)
assert actual_email == expected_email
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.