test_errors.py
1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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",
"OptionError",
"NumbaUtilError",
],
)
def test_exception_importable(exc):
from pandas import errors
err = getattr(errors, exc)
assert err is not None
# check that we can raise on them
msg = "^$"
with pytest.raises(err, match=msg):
raise err()
def test_catch_oob():
from pandas import errors
msg = "Out of bounds nanosecond timestamp: 1500-01-01 00:00:00"
with pytest.raises(errors.OutOfBoundsDatetime, match=msg):
pd.Timestamp("15000101")
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()