2014-02-13 119 views
0

有沒有人有任何提示或測試Python描述符的良好做法?測試Python描述符

我正在寫一些描述符來封裝數據驗證,並且想爲它們編寫測試。

一方面,我想知道是否應該通過在測試中創建描述符實例來測試它們,然後明確調用__get____set__方法。

或者我應該在我的測試文件中使用描述符類創建一個特殊類,然後在我的測試中使用那個類?

或者我應該添加描述符到unittest.TestCase的子類?

任何其他技巧,將不勝感激。

回答

2

我會直接調用描述符方法。你是單元測試描述符,而不是Python如何使用描述符。

這樣,你也可以更好地控制傳遞的內容;你可以模擬出你心中內容的類型和實例參數。

import unittest 


class MockClass(object): 
    # add any methods to assert access here 


class DescriptorTests(unittest.TestCase): 
    def _make_one(self, *args, **kw): 
     from original_module import DescriptorClass 
     return DescriptorClass(*args, **kw) 

    def test_class_access(self): 
     # only a type is passed in, no instance 
     desc = self._make_one() 
     res = desc.__get__(None, MockClass) 
     self.assertEqual(res.someattribute, 'somevalue') 

    # etc. 


if __name__ == '__main__': 
    unittest.main()