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
8 # pylint: disable=missing-docstring
15 from functest.core import pytest_suite_runner
16 from functest.core import testcase
19 class PyTestSuiteRunnerTesting(unittest.TestCase):
22 self.psrunner = pytest_suite_runner.PyTestSuiteRunner()
24 def _test_run(self, result, status=testcase.TestCase.EX_OK):
25 with mock.patch('functest.core.pytest_suite_runner.'
26 'unittest.TextTestRunner.run',
28 self.assertEqual(self.psrunner.run(), status)
30 def test_run_no_ut(self):
31 mock_result = mock.Mock(testsRun=0, errors=[], failures=[])
32 self._test_run(mock_result, testcase.TestCase.EX_RUN_ERROR)
33 self.assertEqual(self.psrunner.result, 0)
34 self.assertEqual(self.psrunner.details, {'errors': [], 'failures': []})
35 self.assertEqual(self.psrunner.is_successful(),
36 testcase.TestCase.EX_TESTCASE_FAILED)
38 def test_run_ko(self):
39 self.psrunner.criteria = 100
40 mock_result = mock.Mock(testsRun=50, errors=[('test1', 'error_msg1')],
41 failures=[('test2', 'failure_msg1')])
42 self._test_run(mock_result, testcase.TestCase.EX_OK)
43 self.assertEqual(self.psrunner.result, 96)
44 self.assertEqual(self.psrunner.details,
45 {'errors': [('test1', 'error_msg1')],
46 'failures': [('test2', 'failure_msg1')]})
47 self.assertEqual(self.psrunner.is_successful(),
48 testcase.TestCase.EX_TESTCASE_FAILED)
50 def test_run_ok(self):
51 mock_result = mock.Mock(testsRun=50, errors=[],
53 self._test_run(mock_result)
54 self.assertEqual(self.psrunner.result, 100)
55 self.assertEqual(self.psrunner.details, {'errors': [], 'failures': []})
56 self.assertEqual(self.psrunner.is_successful(),
57 testcase.TestCase.EX_OK)
60 if __name__ == "__main__":
61 logging.disable(logging.CRITICAL)
62 unittest.main(verbosity=2)