Unit tests: share common code (#31456)

* move set_module_args to units.modules.utils
* unit tests: reuse set_module_args
* unit tests: mock exit/fail_json in module.utils.ModuleTestCase
* unit tests: use module.utils.ModuleTestCase
* unit tests: fix 'import shadowed by loop variable'
This commit is contained in:
Pilou
2017-11-17 18:17:07 +01:00
committed by Matt Clay
parent 71a6dcdf3e
commit a5c9726502
154 changed files with 671 additions and 1113 deletions

View File

@@ -22,16 +22,9 @@ __metaclass__ = type
import json
import os
from ansible.compat.tests import unittest
from ansible.compat.tests.mock import patch
from ansible.module_utils import basic
from ansible.module_utils._text import to_bytes
from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
def set_module_args(args):
args = json.dumps({'ANSIBLE_MODULE_ARGS': args})
basic._ANSIBLE_ARGS = to_bytes(args)
fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
fixture_data = {}
@@ -54,15 +47,7 @@ def load_fixture(name):
return data
class AnsibleExitJson(Exception):
pass
class AnsibleFailJson(Exception):
pass
class TestEosModule(unittest.TestCase):
class TestEosModule(ModuleTestCase):
def execute_module(self, failed=False, changed=False, commands=None, inputs=None, sort=True, defaults=False, transport='cli'):
@@ -98,27 +83,16 @@ class TestEosModule(unittest.TestCase):
return result
def failed(self):
def fail_json(*args, **kwargs):
kwargs['failed'] = True
raise AnsibleFailJson(kwargs)
with patch.object(basic.AnsibleModule, 'fail_json', fail_json):
with self.assertRaises(AnsibleFailJson) as exc:
self.module.main()
with self.assertRaises(AnsibleFailJson) as exc:
self.module.main()
result = exc.exception.args[0]
self.assertTrue(result['failed'], result)
return result
def changed(self, changed=False):
def exit_json(*args, **kwargs):
if 'changed' not in kwargs:
kwargs['changed'] = False
raise AnsibleExitJson(kwargs)
with patch.object(basic.AnsibleModule, 'exit_json', exit_json):
with self.assertRaises(AnsibleExitJson) as exc:
self.module.main()
with self.assertRaises(AnsibleExitJson) as exc:
self.module.main()
result = exc.exception.args[0]
self.assertEqual(result['changed'], changed, result)

View File

@@ -17,11 +17,10 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_banner
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosBannerModule(TestEosModule):
@@ -29,6 +28,8 @@ class TestEosBannerModule(TestEosModule):
module = eos_banner
def setUp(self):
super(TestEosBannerModule, self).setUp()
self.mock_run_commands = patch('ansible.modules.network.eos.eos_banner.run_commands')
self.run_commands = self.mock_run_commands.start()
@@ -36,6 +37,8 @@ class TestEosBannerModule(TestEosModule):
self.load_config = self.mock_load_config.start()
def tearDown(self):
super(TestEosBannerModule, self).tearDown()
self.mock_run_commands.stop()
self.mock_load_config.stop()

View File

@@ -23,7 +23,8 @@ import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_command
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosCommandModule(TestEosModule):
@@ -31,10 +32,12 @@ class TestEosCommandModule(TestEosModule):
module = eos_command
def setUp(self):
super(TestEosCommandModule, self).setUp()
self.mock_run_commands = patch('ansible.modules.network.eos.eos_command.run_commands')
self.run_commands = self.mock_run_commands.start()
def tearDown(self):
super(TestEosCommandModule, self).tearDown()
self.mock_run_commands.stop()
def load_fixtures(self, commands=None, transport='cli'):

View File

@@ -19,11 +19,10 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_config
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosConfigModule(TestEosModule):
@@ -31,6 +30,7 @@ class TestEosConfigModule(TestEosModule):
module = eos_config
def setUp(self):
super(TestEosConfigModule, self).setUp()
self.mock_get_config = patch('ansible.modules.network.eos.eos_config.get_config')
self.get_config = self.mock_get_config.start()
@@ -38,6 +38,7 @@ class TestEosConfigModule(TestEosModule):
self.load_config = self.mock_load_config.start()
def tearDown(self):
super(TestEosConfigModule, self).tearDown()
self.mock_get_config.stop()
self.mock_load_config.stop()

View File

@@ -19,11 +19,10 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_eapi
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosEapiModule(TestEosModule):
@@ -31,6 +30,8 @@ class TestEosEapiModule(TestEosModule):
module = eos_eapi
def setUp(self):
super(TestEosEapiModule, self).setUp()
self.mock_run_commands = patch('ansible.modules.network.eos.eos_eapi.run_commands')
self.run_commands = self.mock_run_commands.start()
@@ -43,6 +44,8 @@ class TestEosEapiModule(TestEosModule):
self.command_fixtures = {}
def tearDown(self):
super(TestEosEapiModule, self).tearDown()
self.mock_run_commands.stop()
self.mock_load_config.stop()

View File

@@ -19,11 +19,10 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_system
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosSystemModule(TestEosModule):
@@ -31,6 +30,8 @@ class TestEosSystemModule(TestEosModule):
module = eos_system
def setUp(self):
super(TestEosSystemModule, self).setUp()
self.mock_get_config = patch('ansible.modules.network.eos.eos_system.get_config')
self.get_config = self.mock_get_config.start()
@@ -38,6 +39,8 @@ class TestEosSystemModule(TestEosModule):
self.load_config = self.mock_load_config.start()
def tearDown(self):
super(TestEosSystemModule, self).tearDown()
self.mock_get_config.stop()
self.mock_load_config.stop()

View File

@@ -17,11 +17,10 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from ansible.modules.network.eos import eos_user
from .eos_module import TestEosModule, load_fixture, set_module_args
from units.modules.utils import set_module_args
from .eos_module import TestEosModule, load_fixture
class TestEosUserModule(TestEosModule):
@@ -29,6 +28,8 @@ class TestEosUserModule(TestEosModule):
module = eos_user
def setUp(self):
super(TestEosUserModule, self).setUp()
self.mock_get_config = patch('ansible.modules.network.eos.eos_user.get_config')
self.get_config = self.mock_get_config.start()
@@ -36,6 +37,8 @@ class TestEosUserModule(TestEosModule):
self.load_config = self.mock_load_config.start()
def tearDown(self):
super(TestEosUserModule, self).tearDown()
self.mock_get_config.stop()
self.mock_load_config.stop()