write test results to a local file
[functest.git] / functest / tests / unit / core / test_testcase_base.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2016 Orange and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 import logging
11 import mock
12 import os
13 import unittest
14
15 mock.patch('logging.FileHandler').start()  # noqa
16
17 from functest.core import testcase_base
18
19
20 class TestcaseBaseTesting(unittest.TestCase):
21
22     logging.disable(logging.CRITICAL)
23
24     def setUp(self):
25         self.test = testcase_base.TestcaseBase()
26         self.test.project = "functest"
27         self.test.case_name = "base"
28         self.test.start_time = "1"
29         self.test.stop_time = "2"
30         self.test.criteria = "PASS"
31         self.test.details = {"Hello": "World"}
32
33     def test_run_unimplemented(self):
34         self.assertEqual(self.test.run(),
35                          testcase_base.TestcaseBase.EX_RUN_ERROR)
36
37     @mock.patch.dict(os.environ, {})
38     @mock.patch('functest.utils.functest_utils.push_results_to_db',
39                 return_value=False)
40     def _test_missing_attribute(self, mock_function):
41         self.assertEqual(self.test.publish_report(),
42                          testcase_base.TestcaseBase.EX_PUBLISH_RESULT_FAILED)
43         mock_function.assert_not_called()
44
45     def test_missing_case_name(self):
46         self.test.case_name = None
47         self._test_missing_attribute()
48
49     def test_missing_criteria(self):
50         self.test.criteria = None
51         self._test_missing_attribute()
52
53     def test_missing_start_time(self):
54         self.test.start_time = None
55         self._test_missing_attribute()
56
57     def test_missing_stop_time(self):
58         self.test.stop_time = None
59         self._test_missing_attribute()
60
61     @mock.patch('functest.utils.functest_utils.push_results_to_db',
62                 return_value=True)
63     def test_missing_details(self, mock_function):
64         self.test.details = None
65         self.assertEqual(self.test.push_to_db(),
66                          testcase_base.TestcaseBase.EX_OK)
67         mock_function.assert_called_once_with(
68             self.test.project, self.test.case_name, self.test.start_time,
69             self.test.stop_time, self.test.criteria, self.test.details)
70
71     @mock.patch('functest.utils.functest_utils.push_results_to_db',
72                 return_value=False)
73     def test_push_to_db_failed(self, mock_function):
74         self.assertEqual(self.test.push_to_db(),
75                          testcase_base.TestcaseBase.EX_PUBLISH_RESULT_FAILED)
76         mock_function.assert_called_once_with(
77             self.test.project, self.test.case_name, self.test.start_time,
78             self.test.stop_time, self.test.criteria, self.test.details)
79
80     @mock.patch('functest.utils.functest_utils.push_results_to_db',
81                 return_value=True)
82     def test_push_to_db(self, mock_function):
83         self.assertEqual(self.test.push_to_db(),
84                          testcase_base.TestcaseBase.EX_OK)
85         mock_function.assert_called_once_with(
86             self.test.project, self.test.case_name, self.test.start_time,
87             self.test.stop_time, self.test.criteria, self.test.details)
88
89     def test_check_criteria_missing(self):
90         self.test.criteria = None
91         self.assertEqual(self.test.check_criteria(),
92                          testcase_base.TestcaseBase.EX_TESTCASE_FAILED)
93
94     def test_check_criteria_failed(self):
95         self.test.criteria = 'FAILED'
96         self.assertEqual(self.test.check_criteria(),
97                          testcase_base.TestcaseBase.EX_TESTCASE_FAILED)
98
99     def test_check_criteria_pass(self):
100         self.test.criteria = 'PASS'
101         self.assertEqual(self.test.check_criteria(),
102                          testcase_base.TestcaseBase.EX_OK)
103
104
105 if __name__ == "__main__":
106     unittest.main(verbosity=2)