From a1464617ad7804d935c8f53519a1e5e1016dff93 Mon Sep 17 00:00:00 2001 From: Yann poupon Date: Tue, 17 Jan 2023 16:51:59 +0100 Subject: [PATCH 1/3] fix: test result shown as failed when a subtest fails --- src/pykiso/test_result/text_result.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/pykiso/test_result/text_result.py b/src/pykiso/test_result/text_result.py index c8d23f1d..a0192445 100644 --- a/src/pykiso/test_result/text_result.py +++ b/src/pykiso/test_result/text_result.py @@ -31,6 +31,7 @@ from shutil import get_terminal_size from typing import List, Optional, TextIO, Union from unittest import TextTestResult +from unittest.case import _SubTest from ..test_coordinator.test_case import BasicTest from ..test_coordinator.test_suite import BaseTestSuite @@ -241,6 +242,22 @@ def addError(self, test: Union[BasicTest, BaseTestSuite], err: ExcInfoType) -> N super().addError(test, err) self._error_occurred = True + def addSubTest( + self, + test: Union[BasicTest, BaseTestSuite], + subtest: _SubTest, + err: ExcInfoType, + ) -> None: + """Set the error flag when an error occurs in a subtest. + + :param test: running testcase + :param subtest: subtest runned + :param err: tuple returned by sys.exc_info + """ + super().addSubTest(test, subtest, err) + if err is not None: + self._error_occurred = True + def printErrorList(self, flavour: str, errors: List[tuple]): """Print all errors at the end of the whole tests execution. From ea6289d02ee74e5d8a7713ef1fec7560069284eb Mon Sep 17 00:00:00 2001 From: Yann poupon Date: Thu, 19 Jan 2023 09:49:33 +0100 Subject: [PATCH 2/3] test: adding test --- tests/test_text_result.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/test_text_result.py b/tests/test_text_result.py index 6f9d23fb..1f8e42e6 100644 --- a/tests/test_text_result.py +++ b/tests/test_text_result.py @@ -13,7 +13,7 @@ import pytest -from pykiso.test_result.text_result import ResultStream +from pykiso.test_result.text_result import BannerTestResult, ResultStream DUMMY_FILE = "dummy.txt" @@ -94,3 +94,22 @@ def test_close(self, test_result_instance): assert test_result_instance.stderr is None assert test_result_instance.file is None + + +class TestBannerTestResult: + @pytest.fixture() + def test_result_instance(self, mock_open): + return BannerTestResult(None, None, 1) + + @pytest.mark.parametrize( + "error,result_expected", [((Exception), True), (None, False)] + ) + def test_addSubTest(self, mocker, test_result_instance, error, result_expected): + add_subTest_mock = mocker.patch("unittest.result.TestResult.addSubTest") + test_mock = mocker.patch("pykiso.test_coordinator.test_case.BasicTest") + subtest_mock = mocker.patch("unittest.case._SubTest") + + test_result_instance.addSubTest(test_mock, subtest_mock, error) + + add_subTest_mock.assert_called_once_with(test_mock, subtest_mock, error) + assert test_result_instance.error_occurred == result_expected From b414f66bed2116fc9db1bc39b26a7e457e60d7fa Mon Sep 17 00:00:00 2001 From: Yann poupon Date: Thu, 19 Jan 2023 09:55:44 +0100 Subject: [PATCH 3/3] test: changing name variable --- tests/test_text_result.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/test_text_result.py b/tests/test_text_result.py index 1f8e42e6..5a09a63b 100644 --- a/tests/test_text_result.py +++ b/tests/test_text_result.py @@ -98,18 +98,20 @@ def test_close(self, test_result_instance): class TestBannerTestResult: @pytest.fixture() - def test_result_instance(self, mock_open): - return BannerTestResult(None, None, 1) + def banner_test_result_instance(self): + return BannerTestResult(sys.stderr, True, 1) @pytest.mark.parametrize( "error,result_expected", [((Exception), True), (None, False)] ) - def test_addSubTest(self, mocker, test_result_instance, error, result_expected): + def test_addSubTest( + self, mocker, banner_test_result_instance, error, result_expected + ): add_subTest_mock = mocker.patch("unittest.result.TestResult.addSubTest") test_mock = mocker.patch("pykiso.test_coordinator.test_case.BasicTest") subtest_mock = mocker.patch("unittest.case._SubTest") - test_result_instance.addSubTest(test_mock, subtest_mock, error) + banner_test_result_instance.addSubTest(test_mock, subtest_mock, error) add_subTest_mock.assert_called_once_with(test_mock, subtest_mock, error) - assert test_result_instance.error_occurred == result_expected + assert banner_test_result_instance.error_occurred == result_expected