Merge "Leverage logging config and refactor the logger"
[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 from functest.core import testcase_base
16
17
18 class TestcaseBaseTesting(unittest.TestCase):
19
20     logging.disable(logging.CRITICAL)
21
22     def setUp(self):
23         self.test = testcase_base.TestcaseBase()
24         self.test.project = "functest"
25         self.test.case_name = "base"
26         self.test.start_time = "1"
27         self.test.stop_time = "2"
28         self.test.criteria = "PASS"
29         self.test.details = {"Hello": "World"}
30
31     def test_run_unimplemented(self):
32         self.assertEqual(self.test.run(),
33                          testcase_base.TestcaseBase.EX_RUN_ERROR)
34
35     @mock.patch.dict(os.environ, {})
36     @mock.patch('functest.utils.functest_utils.push_results_to_db',
37                 return_value=False)
38     def _test_missing_attribute(self, mock_function):
39         self.assertEqual(self.test.publish_report(),
40                          testcase_base.TestcaseBase.EX_PUBLISH_RESULT_FAILED)
41         mock_function.assert_not_called()
42
43     def test_missing_case_name(self):
44         self.test.case_name = None
45         self._test_missing_attribute()
46
47     def test_missing_criteria(self):
48         self.test.criteria = None
49         self._test_missing_attribute()
50
51     def test_missing_start_time(self):
52         self.test.start_time = None
53         self._test_missing_attribute()
54
55     def test_missing_stop_time(self):
56         self.test.stop_time = None
57         self._test_missing_attribute()
58
59     @mock.patch('functest.utils.functest_utils.push_results_to_db',
60                 return_value=True)
61     def test_missing_details(self, mock_function):
62         self.test.details = None
63         self.assertEqual(self.test.push_to_db(),
64                          testcase_base.TestcaseBase.EX_OK)
65         mock_function.assert_called_once_with(
66             self.test.project, self.test.case_name, self.test.start_time,
67             self.test.stop_time, self.test.criteria, self.test.details)
68
69     @mock.patch('functest.utils.functest_utils.push_results_to_db',
70                 return_value=False)
71     def test_push_to_db_failed(self, mock_function):
72         self.assertEqual(self.test.push_to_db(),
73                          testcase_base.TestcaseBase.EX_PUBLISH_RESULT_FAILED)
74         mock_function.assert_called_once_with(
75             self.test.project, self.test.case_name, self.test.start_time,
76             self.test.stop_time, self.test.criteria, self.test.details)
77
78     @mock.patch('functest.utils.functest_utils.push_results_to_db',
79                 return_value=True)
80     def test_push_to_db(self, mock_function):
81         self.assertEqual(self.test.push_to_db(),
82                          testcase_base.TestcaseBase.EX_OK)
83         mock_function.assert_called_once_with(
84             self.test.project, self.test.case_name, self.test.start_time,
85             self.test.stop_time, self.test.criteria, self.test.details)
86
87     def test_check_criteria_missing(self):
88         self.test.criteria = None
89         self.assertEqual(self.test.check_criteria(),
90                          testcase_base.TestcaseBase.EX_TESTCASE_FAILED)
91
92     def test_check_criteria_failed(self):
93         self.test.criteria = 'FAILED'
94         self.assertEqual(self.test.check_criteria(),
95                          testcase_base.TestcaseBase.EX_TESTCASE_FAILED)
96
97     def test_check_criteria_pass(self):
98         self.test.criteria = 'PASS'
99         self.assertEqual(self.test.check_criteria(),
100                          testcase_base.TestcaseBase.EX_OK)
101
102
103 if __name__ == "__main__":
104     unittest.main(verbosity=2)