[virt-tools-list] [virt-bootstrap] [PATCH v5 10/11] tests: Add unit tests for "progress" module
Cedric Bosdonnat
cbosdonnat at suse.com
Mon Jul 24 13:41:15 UTC 2017
On Mon, 2017-07-24 at 09:14 +0100, Radostin Stoyanov wrote:
> ---
> tests/test_progress.py | 115 +++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 115 insertions(+)
> create mode 100644 tests/test_progress.py
>
> diff --git a/tests/test_progress.py b/tests/test_progress.py
> new file mode 100644
> index 0000000..8c1d078
> --- /dev/null
> +++ b/tests/test_progress.py
> @@ -0,0 +1,115 @@
> +# Authors:
> +# Cedric Bosdonnat <cbosdonnat at suse.com>
> +# Radostin Stoyanov <rstoyanov1 at gmail.com>
> +#
> +# Copyright (C) 2017 SUSE, Inc.
> +# Copyright (C) 2017 Radostin Stoyanov
> +#
Same comment here.
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +
> +
> +"""
> +Unit tests for methods defined in virtBootstrap.progress
> +"""
> +
> +from tests import unittest
> +from tests import mock
> +from tests import progress
> +
> +
> +# pylint: disable=invalid-name
> +class TestFileSource(unittest.TestCase):
> + """
> + Test cases for Progress module
> + """
> +
> + ###################################
> + # Tests for: __init__()
> + ###################################
> + def test_progress_init(self):
> + """
> + Ensures that __init__() assigns the collback value to instance
> + variable and creates dictionary with 'status', 'value' keys.
> + """
> + callback = mock.Mock()
> + test_instance = progress.Progress(callback)
> + for key in ['status', 'value']:
> + self.assertIn(key, test_instance.progress)
> + self.assertIs(callback, test_instance.callback)
> +
> + ###################################
> + # Tests for: get_progress()
> + ###################################
> + def test_get_progress(self):
> + """
> + Ensures that get_progress() returns copy of the progress dictionary
> + which has the same keys and values.
> + """
> + test_instance = progress.Progress()
> + test_result = test_instance.get_progress()
> + self.assertIsNot(test_instance.progress, test_result)
> + self.assertDictEqual(test_instance.progress, test_result)
> +
> + ###################################
> + # Tests for: update_progress()
> + ###################################
> + def test_update_progress_creates_log_record(self):
> + """
> + Ensures that update_progress() creates log record with info level
> + and pass the status value as message.
> + """
> + test_instance = progress.Progress()
> + logger = mock.Mock()
> + status = "Test"
> + test_instance.update_progress(status=status, logger=logger)
> + logger.info.assert_called_once_with(status)
> +
> + def test_update_progress_update_status_and_value(self):
> + """
> + Ensures that update_progress() creates log record with info level
> + and pass the status value as message.
> + """
> + test_instance = progress.Progress()
> + test_instance.progress = {'status': '', 'value': 0}
> + new_status = 'Test'
> + new_value = 100
> + new_progress = {'status': new_status, 'value': new_value}
> + test_instance.update_progress(status=new_status, value=new_value)
> + self.assertDictEqual(test_instance.progress, new_progress)
> +
> + def test_update_progress_update_raise_logger_error(self):
> + """
> + Ensures that update_progress() raise ValueError when creating
> + log record has failed.
> + """
> + msg = 'test'
> + test_instance = progress.Progress()
> + logger = mock.Mock()
> + logger.info.side_effect = Exception(msg)
> + with self.assertRaises(ValueError) as err:
> + test_instance.update_progress(logger=logger)
> + self.assertIn(msg, str(err.exception))
> +
> + def test_update_progress_update_raise_callback_error(self):
> + """
> + Ensures that update_progress() raise ValueError when calling
> + callback failed.
> + """
> + msg = 'test'
> + callback = mock.Mock()
> + callback.side_effect = Exception(msg)
> + test_instance = progress.Progress(callback)
> + with self.assertRaises(ValueError) as err:
> + test_instance.update_progress('foo', 'bar')
> + self.assertIn(msg, str(err.exception))
ACK
--
Cedric
More information about the virt-tools-list
mailing list