def test_auto_import_mock_package(): import patched mock_package = unit_test.AutoImportMockPackage(name='patched.module') unit_test.patch_module('patched.module', mock_package) assert not isinstance(patched.module.import_over_patch, MagicMock) assert isinstance(patched.module, MagicMock) assert patched.module.import_over_patch.real_or_fake == 'real'
def test_unpatched_with_patched_child(): unit_test.patch_module('dummy.test.module') import dummy.test import dummy.test.module as dummy_test_module assert isinstance(dummy.test, MagicMock) assert isinstance(dummy.test.module, MagicMock) assert dummy.test.module is dummy_test_module
def test_patch_with_patched_ancestor(): unit_test.patch_module('dummy') unit_test.patch_module('dummy.test') import dummy.test as dummy_test import dummy assert isinstance(dummy_test, MagicMock) assert dummy.test is dummy_test
def test_auto_import_mock_package_top_level(): mock_package = unit_test.AutoImportMockPackage(name='module') unit_test.patch_module('module', mock_package) import module assert not isinstance(module.import_over_patch, MagicMock) assert isinstance(module, MagicMock) assert module.import_over_patch.real_or_fake == 'real'
def test_import_real_over_patched_ancestor(): sys.path.insert(0, str(Path(__file__).parent / 'lib')) unit_test.patch_module('patched.module') import patched.module.import_over_patch as import_over_patch import patched.module assert not isinstance(import_over_patch, MagicMock) assert isinstance(patched.module, MagicMock) assert import_over_patch.real_or_fake == 'real' assert patched.module.import_over_patch is import_over_patch
import os from charms.unit_test import patch_module, identity, MockKV, flags, MockEndpoint ch = patch_module("charmhelpers") ch.core.hookenv.atexit = identity ch.core.hookenv.charm_dir.return_value = "charm_dir" ch.core.unitdata.kv.return_value = MockKV() reactive = patch_module("charms.reactive") reactive.when.return_value = identity reactive.when_all.return_value = identity reactive.when_any.return_value = identity reactive.when_not.return_value = identity reactive.when_not_all.return_value = identity reactive.when_none.return_value = identity reactive.hook.return_value = identity reactive.set_flag.side_effect = flags.add reactive.clear_flag.side_effect = flags.discard reactive.set_state.side_effect = flags.add reactive.remove_state.side_effect = flags.discard reactive.toggle_flag.side_effect = lambda f, s: (flags.add(f) if s else flags.discard(f)) reactive.is_flag_set.side_effect = lambda f: f in flags reactive.is_state.side_effect = lambda f: f in flags reactive.get_flags.side_effect = lambda: sorted(flags) reactive.get_unset_flags.side_effect = lambda *f: sorted(set(f) - flags) reactive.Endpoint = MockEndpoint os.environ["JUJU_MODEL_UUID"] = "test-1234"
def test_unpatched_with_patched_ancestor(): unit_test.patch_module('dummy') from dummy import test import dummy.test.module as dummy_test_module assert isinstance(dummy_test_module, MagicMock) assert test.module is dummy_test_module
def test_patch_with_real_ancestor(): unit_test.patch_module('charms.dummy') import charms.dummy as charms_dummy import charms assert isinstance(charms_dummy, MagicMock) assert charms.dummy is charms_dummy
def test_patch(): unit_test.patch_module('dummy') import dummy assert isinstance(dummy, MagicMock) assert isinstance(dummy.foo, MagicMock)