2014-02-13 118 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()