aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2020-01-04 16:30:07 +0100
committerCédric Ollivier <cedric.ollivier@orange.com>2020-01-04 16:30:51 +0100
commitb2c3ee8560d3f98f668007c1bcb55b6194e631c4 (patch)
tree2ae12bda7ace5b39e55a9e55e5b915ed78c4a6f3
parentf187187c3afa730e94ffcdffd84e54494def306a (diff)
Fix behave driver and its related unit tests
Change-Id: I466d655162c1ddd5f4e3ef0e356a27007bfaea0f Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
-rw-r--r--xtesting/core/behaveframework.py29
-rw-r--r--xtesting/tests/unit/core/test_behaveframework.py36
-rw-r--r--xtesting/tests/unit/core/test_testcase.py1
3 files changed, 27 insertions, 39 deletions
diff --git a/xtesting/core/behaveframework.py b/xtesting/core/behaveframework.py
index ede3883f..2b41614c 100644
--- a/xtesting/core/behaveframework.py
+++ b/xtesting/core/behaveframework.py
@@ -43,14 +43,8 @@ class BehaveFramework(testcase.TestCase):
def parse_results(self):
"""Parse output.json and get the details in it."""
-
- try:
- with open(self.json_file) as stream_:
- self.response = json.load(stream_)
- except IOError:
- self.__logger.error("Error reading the file %s", self.json_file)
-
- try:
+ with open(self.json_file) as stream_:
+ self.response = json.load(stream_)
if self.response:
self.total_tests = len(self.response)
for item in self.response:
@@ -60,21 +54,14 @@ class BehaveFramework(testcase.TestCase):
self.fail_tests += 1
elif item['status'] == 'skipped':
self.skip_tests += 1
- except KeyError:
- self.__logger.error("Error in json - %s", self.response)
-
- try:
self.result = 100 * (
self.pass_tests / self.total_tests)
- except ZeroDivisionError:
- self.__logger.error("No test has been run")
-
- self.details = {}
- self.details['total_tests'] = self.total_tests
- self.details['pass_tests'] = self.pass_tests
- self.details['fail_tests'] = self.fail_tests
- self.details['skip_tests'] = self.skip_tests
- self.details['tests'] = self.response
+ self.details = {}
+ self.details['total_tests'] = self.total_tests
+ self.details['pass_tests'] = self.pass_tests
+ self.details['fail_tests'] = self.fail_tests
+ self.details['skip_tests'] = self.skip_tests
+ self.details['tests'] = self.response
def run(self, **kwargs):
"""Run the BehaveFramework feature files
diff --git a/xtesting/tests/unit/core/test_behaveframework.py b/xtesting/tests/unit/core/test_behaveframework.py
index c4ab2f7c..414d96b5 100644
--- a/xtesting/tests/unit/core/test_behaveframework.py
+++ b/xtesting/tests/unit/core/test_behaveframework.py
@@ -32,28 +32,27 @@ class ParseResultTesting(unittest.TestCase):
self.test = behaveframework.BehaveFramework(
case_name='behave', project_name='xtesting')
- def test_raises_exc_open(self):
- self.test.json_file = 'dummy_file'
- self.test.response = self._response
- with mock.patch('six.moves.builtins.open',
- mock.mock_open()) as mock_file:
- mock_file.side_effect = IOError()
- self.assertRaises(IOError, self.test.parse_results())
- mock_file.assert_called_once_with('dummy_file')
-
- def test_raises_exc_key(self):
- with mock.patch('six.moves.builtins.open', mock.mock_open()), \
- mock.patch('json.load', return_value=[{'foo': 'bar'}]):
- self.assertRaises(KeyError, self.test.parse_results())
+ @mock.patch('six.moves.builtins.open', side_effect=OSError)
+ def test_raises_exc_open(self, *args): # pylint: disable=unused-argument
+ with self.assertRaises(OSError):
+ self.test.parse_results()
- def test_raises_exe_zerodivision(self):
- with mock.patch('six.moves.builtins.open', mock.mock_open()), \
- mock.patch('json.load', mock.Mock(return_value=[])):
- self.assertRaises(ZeroDivisionError, self.test.parse_results())
+ @mock.patch('json.load', return_value=[{'foo': 'bar'}])
+ @mock.patch('six.moves.builtins.open', mock.mock_open())
+ def test_raises_exc_key(self, *args): # pylint: disable=unused-argument
+ with self.assertRaises(KeyError):
+ self.test.parse_results()
+
+ @mock.patch('json.load', return_value=[])
+ @mock.patch('six.moves.builtins.open', mock.mock_open())
+ def test_raises_exe_zerodivision(self, *args):
+ # pylint: disable=unused-argument
+ with self.assertRaises(ZeroDivisionError):
+ self.test.parse_results()
def _test_result(self, response, result):
with mock.patch('six.moves.builtins.open', mock.mock_open()), \
- mock.patch('json.load', mock.Mock(return_value=response)):
+ mock.patch('json.load', return_value=response):
self.test.parse_results()
self.assertEqual(self.test.result, result)
@@ -171,6 +170,7 @@ class RunTesting(unittest.TestCase):
self._test_parse_results(self.test.EX_RUN_ERROR)
mock_method.assert_called_once_with()
+
if __name__ == "__main__":
logging.disable(logging.CRITICAL)
unittest.main(verbosity=2)
diff --git a/xtesting/tests/unit/core/test_testcase.py b/xtesting/tests/unit/core/test_testcase.py
index f3b2d512..63bfc3fe 100644
--- a/xtesting/tests/unit/core/test_testcase.py
+++ b/xtesting/tests/unit/core/test_testcase.py
@@ -449,6 +449,7 @@ class TestCaseTesting(unittest.TestCase):
ExtraArgs={'ContentType': 'text/plain'})]
self.assertEqual(args[1].mock_calls, expected)
+
if __name__ == "__main__":
logging.disable(logging.CRITICAL)
unittest.main(verbosity=2)