Cover ODLTests.parse_results() 21/26721/1
authorCédric Ollivier <cedric.ollivier@orange.com>
Thu, 5 Jan 2017 10:46:46 +0000 (11:46 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Thu, 5 Jan 2017 10:47:54 +0000 (11:47 +0100)
The ODL testcase is now fully covered by unit tests.

Change-Id: I856a40138739b148babcfa96e82da05bb83e63e1
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/opnfv_tests/sdn/odl/odl.py
functest/tests/unit/odl/test_odl.py

index 80827e4..45b313d 100755 (executable)
@@ -15,7 +15,7 @@ import re
 import sys
 import urlparse
 
-from robot.api import ExecutionResult, ResultVisitor
+import robot.api
 from robot.errors import RobotError
 import robot.run
 from robot.utils.robottime import timestamp_to_secs
@@ -25,7 +25,7 @@ import functest.utils.functest_logger as ft_logger
 import functest.utils.openstack_utils as op_utils
 
 
-class ODLResultVisitor(ResultVisitor):
+class ODLResultVisitor(robot.api.ResultVisitor):
 
     def __init__(self):
         self._data = []
@@ -79,7 +79,7 @@ class ODLTests(testcase_base.TestcaseBase):
 
     def parse_results(self):
         xml_file = os.path.join(self.res_dir, 'output.xml')
-        result = ExecutionResult(xml_file)
+        result = robot.api.ExecutionResult(xml_file)
         visitor = ODLResultVisitor()
         result.visit(visitor)
         self.criteria = result.suite.status
index 3878337..d45d562 100644 (file)
@@ -15,8 +15,9 @@ import StringIO
 import unittest
 
 from keystoneauth1.exceptions import auth_plugins
-from robot.errors import RobotError
+from robot.errors import DataError, RobotError
 from robot.result import testcase
+from robot.utils.robottime import timestamp_to_secs
 
 mock.patch('logging.FileHandler').start()  # noqa
 from functest.core import testcase_base
@@ -85,6 +86,27 @@ class ODLTesting(unittest.TestCase):
         visitor.visit_test(test)
         self.assertEqual(visitor.get_data(), [data])
 
+    @mock.patch('robot.api.ExecutionResult', side_effect=DataError)
+    def test_parse_results_raises_exceptions(self, *args):
+        with self.assertRaises(DataError):
+            self.test.parse_results()
+
+    def test_parse_results(self, *args):
+        config = {'name': 'dummy', 'starttime': '20161216 16:00:00.000',
+                  'endtime': '20161216 16:00:01.000', 'status': 'PASS'}
+        suite = mock.Mock()
+        suite.configure_mock(**config)
+        with mock.patch('robot.api.ExecutionResult',
+                        return_value=mock.Mock(suite=suite)):
+            self.test.parse_results()
+            self.assertEqual(self.test.criteria, config['status'])
+            self.assertEqual(self.test.start_time,
+                             timestamp_to_secs(config['starttime']))
+            self.assertEqual(self.test.stop_time,
+                             timestamp_to_secs(config['endtime']))
+            self.assertEqual(self.test.details,
+                             {'description': config['name'], 'tests': []})
+
     @mock.patch('fileinput.input', side_effect=Exception())
     def test_set_robotframework_vars_failed(self, *args):
         self.assertFalse(self.test.set_robotframework_vars())