Merge "Print stack when catching exceptions in run_tests.py"
[functest.git] / functest / tests / unit / core / test_pytest_suite_runner.py
1 #!/usr/bin/env python
2
3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
7
8 # pylint: disable=missing-docstring
9
10 import logging
11 import unittest
12
13 import mock
14
15 from functest.core import pytest_suite_runner
16 from functest.core import testcase
17
18
19 class PyTestSuiteRunnerTesting(unittest.TestCase):
20
21     def setUp(self):
22         self.psrunner = pytest_suite_runner.PyTestSuiteRunner()
23         self.result = mock.Mock()
24         attrs = {'errors': [('test1', 'error_msg1')],
25                  'failures': [('test2', 'failure_msg1')]}
26         self.result.configure_mock(**attrs)
27
28         self.pass_results = mock.Mock()
29         attrs = {'errors': None,
30                  'failures': None}
31         self.pass_results.configure_mock(**attrs)
32
33     def test_run(self):
34         self.psrunner.case_name = 'test_case_name'
35         with mock.patch('functest.core.pytest_suite_runner.'
36                         'unittest.TextTestRunner.run',
37                         return_value=self.result):
38             self.assertEqual(self.psrunner.run(),
39                              testcase.TestCase.EX_OK)
40
41         with mock.patch('functest.core.pytest_suite_runner.'
42                         'unittest.TextTestRunner.run',
43                         return_value=self.pass_results):
44             self.assertEqual(self.psrunner.run(),
45                              testcase.TestCase.EX_OK)
46
47
48 if __name__ == "__main__":
49     logging.disable(logging.CRITICAL)
50     unittest.main(verbosity=2)