我会直接调用描述符方法。你是单元测试描述符,而不是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()