有没有人有任何关于测试Python描述符的提示或良好做法?
我正在编写一些描述符来封装数据验证,并希望为它们编写测试。
首先,我想知道我是否应该通过在测试中创建描述符实例然后明确调用__get__
或__set__
方法来测试它们。
或者我应该在我的测试文件中创建一个使用描述符类的特殊类,然后在我的测试中使用那个类?
或者我应该将描述符添加到unittest.TestCase的子类中吗?
任何其他提示将不胜感激。
答案 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()