测试Python描述符

时间:2014-02-13 12:35:34

标签: python unit-testing testing descriptor

有没有人有任何关于测试Python描述符的提示或良好做法?

我正在编写一些描述符来封装数据验证,并希望为它们编写测试。

首先,我想知道我是否应该通过在测试中创建描述符实例然后明确调用__get____set__方法来测试它们。

或者我应该在我的测试文件中创建一个使用描述符类的特殊类,然后在我的测试中使用那个类?

或者我应该将描述符添加到unittest.TestCase的子类中吗?

任何其他提示将不胜感激。

1 个答案:

答案 0 :(得分: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()