Тестирование дескрипторов Python
У кого-нибудь есть какие-либо советы или рекомендации по тестированию дескрипторов Python?
Я пишу некоторые дескрипторы для инкапсуляции проверки данных и хочу написать тесты для них.
Во-первых, мне интересно, стоит ли мне проверять их, создавая экземпляры дескрипторов в моих тестах, а затем вызывая __get__
или же __set__
методы явно.
Или я должен создать специальный класс в моем тестовом файле, который использует класс дескриптора, а затем использовать этот класс в моих тестах?
Или я должен добавить дескриптор в мой подкласс unittest.TestCase?
Любые другие советы будут оценены.
1 ответ
Я бы вызвал методы дескриптора напрямую. Вы проводите модульное тестирование дескрипторов, а не то, как 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()