2017-10-17 184 views
0

我試圖將Sandi Metz的單元測試規則應用於對象的公共端確實有影響的消息,並通過測試公共內容來間接測試所有私有內容。如果它設置了一個類的公共屬性,你會單元測試__init__方法嗎?

因此,我們避免測試實現,並可以隨時更改它。

我的問題是:如果我的__init__方法設置公開可用的實例屬性,我應該單元測試它。我基本上不知道如果init應該被視爲私有方法(並認爲,如果它設置公共的東西,它應該是單元測試)。

例子:

MyClass(object): 

    def __init__(self, public_parameter_1, public_param_2) 

     self.public_parameter_1 = public_parameter_1 
     self.public_parameter_2 = public_parameter_2 

測試使用pytest:

def test_instance(): 

    instance = MyClass(1, 2) 

    assert instance.public_parameter_1 == 1 
    assert instance.public_parameter_2 == 2 

回答

1

這是一個有點棘手,因爲Python並沒有真正有私有屬性。我想你可以測試所有不以下劃線開始的東西,或者你可以測試所有東西,但我通常會限制自己測試需要一些計算或邏輯的東西。在你給的例子中,我不會費心測試這兩個簡單的作業。

如果你想做某件事來檢查你的__init__()方法,你可以使用某種linting工具來檢查你在__init__()期間爲你的其他方法訪問的所有屬性都被分配了一個值。這可能比爲所有屬性編寫顯式測試更有效。

相關問題