123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import pytest
- from pandas.errors import AbstractMethodError
- import pandas as pd # noqa
- @pytest.mark.parametrize(
- "exc",
- [
- "UnsupportedFunctionCall",
- "UnsortedIndexError",
- "OutOfBoundsDatetime",
- "ParserError",
- "PerformanceWarning",
- "DtypeWarning",
- "EmptyDataError",
- "ParserWarning",
- "MergeError",
- ],
- )
- def test_exception_importable(exc):
- from pandas import errors
- e = getattr(errors, exc)
- assert e is not None
- # check that we can raise on them
- with pytest.raises(e):
- raise e()
- def test_catch_oob():
- from pandas import errors
- try:
- pd.Timestamp("15000101")
- except errors.OutOfBoundsDatetime:
- pass
- class Foo:
- @classmethod
- def classmethod(cls):
- raise AbstractMethodError(cls, methodtype="classmethod")
- @property
- def property(self):
- raise AbstractMethodError(self, methodtype="property")
- def method(self):
- raise AbstractMethodError(self)
- def test_AbstractMethodError_classmethod():
- xpr = "This classmethod must be defined in the concrete class Foo"
- with pytest.raises(AbstractMethodError, match=xpr):
- Foo.classmethod()
- xpr = "This property must be defined in the concrete class Foo"
- with pytest.raises(AbstractMethodError, match=xpr):
- Foo().property
- xpr = "This method must be defined in the concrete class Foo"
- with pytest.raises(AbstractMethodError, match=xpr):
- Foo().method()
|