test_safe_import.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import types
  4. import pytest
  5. import pandas.util._test_decorators as td
  6. @pytest.mark.parametrize("name", ["foo", "hello123"])
  7. def test_safe_import_non_existent(name):
  8. assert not td.safe_import(name)
  9. def test_safe_import_exists():
  10. assert td.safe_import("pandas")
  11. @pytest.mark.parametrize("min_version,valid", [
  12. ("0.0.0", True),
  13. ("99.99.99", False)
  14. ])
  15. def test_safe_import_versions(min_version, valid):
  16. result = td.safe_import("pandas", min_version=min_version)
  17. result = result if valid else not result
  18. assert result
  19. @pytest.mark.parametrize("min_version,valid", [
  20. (None, False),
  21. ("1.0", True),
  22. ("2.0", False)
  23. ])
  24. def test_safe_import_dummy(monkeypatch, min_version, valid):
  25. mod_name = "hello123"
  26. mod = types.ModuleType(mod_name)
  27. mod.__version__ = "1.5"
  28. if min_version is not None:
  29. monkeypatch.setitem(sys.modules, mod_name, mod)
  30. result = td.safe_import(mod_name, min_version=min_version)
  31. result = result if valid else not result
  32. assert result