簡體   English   中英

測試調用實例變量的類方法-AttributeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM