Files
pydantic/tests/test_abc.py
T
Josep Cugat 06008146fe Subclass abcmeta (#123)
* Added compatibility with python's ABC

* Added documentation

* Added link
2018-02-06 13:56:45 +00:00

45 lines
1.1 KiB
Python

import abc
import pytest
from pydantic import BaseModel
def test_model_subclassing_abstract_base_classes():
class Model(BaseModel, abc.ABC):
some_field: str
def test_model_subclassing_abstract_base_classes_without_implementation_raises_exception():
class Model(BaseModel, abc.ABC):
some_field: str
@abc.abstractmethod
def my_abstract_method(self):
pass
@classmethod
@abc.abstractmethod
def my_abstract_classmethod(cls):
pass
@staticmethod
@abc.abstractmethod
def my_abstract_staticmethod():
pass
@property
@abc.abstractmethod
def my_abstract_property(self):
pass
@my_abstract_property.setter
@abc.abstractmethod
def my_abstract_property(self, val):
pass
with pytest.raises(TypeError) as excinfo:
Model(some_field='some_value')
assert str(excinfo.value) == "Can't instantiate abstract class Model with abstract methods" \
" my_abstract_classmethod, my_abstract_method, my_abstract_property, my_abstract_staticmethod"