test_except.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # coding: utf-8
  2. from datetime import datetime
  3. import pytest
  4. from pandas.io.msgpack import packb, unpackb
  5. class DummyException(Exception):
  6. pass
  7. class TestExceptions(object):
  8. def test_raise_on_find_unsupported_value(self):
  9. msg = "can\'t serialize datetime"
  10. with pytest.raises(TypeError, match=msg):
  11. packb(datetime.now())
  12. def test_raise_from_object_hook(self):
  13. def hook(_):
  14. raise DummyException()
  15. with pytest.raises(DummyException):
  16. unpackb(packb({}), object_hook=hook)
  17. with pytest.raises(DummyException):
  18. unpackb(packb({'fizz': 'buzz'}), object_hook=hook)
  19. with pytest.raises(DummyException):
  20. unpackb(packb({'fizz': 'buzz'}), object_pairs_hook=hook)
  21. with pytest.raises(DummyException):
  22. unpackb(packb({'fizz': {'buzz': 'spam'}}), object_hook=hook)
  23. with pytest.raises(DummyException):
  24. unpackb(packb({'fizz': {'buzz': 'spam'}}), object_pairs_hook=hook)
  25. def test_invalid_value(self):
  26. msg = "Unpack failed: error"
  27. with pytest.raises(ValueError, match=msg):
  28. unpackb(b"\xd9\x97#DL_")