def addSubTest()

in teamcity/unittestpy.py [0:0]


    def addSubTest(self, test, subtest, err):
        _super = super(TeamcityTestResult, self)
        if hasattr(_super, "addSubTest"):
            _super.addSubTest(test, subtest, err)

        # test_id_with_desc may contain description which breaks process of fetching id from subtest
        test_id_with_desc = self.get_test_id_with_description(test)
        test_id = test.id()
        subtest_id = subtest.id()

        if subtest_id.startswith(test_id):
            # Replace "." -> "_" since '.' is a test hierarchy separator
            # See i.e. https://github.com/JetBrains/teamcity-messages/issues/134 (https://youtrack.jetbrains.com/issue/PY-23846)
            block_id = subtest_id[len(test_id):].strip().replace(".", "_")
        else:
            block_id = subtest_id
        if len(block_id) == 0:
            block_id = subtest_id

        if err is not None:
            self.add_subtest_failure(test_id_with_desc, block_id)

            if issubclass(err[0], test.failureException):
                self.messages.subTestBlockOpened(block_id, subTestResult="Failure", flowId=test_id_with_desc)
                self.messages.testStdErr(test_id_with_desc, out="SubTest failure: %s\n" % convert_error_to_string(err), flowId=test_id_with_desc)
                self.messages.blockClosed(block_id, flowId=test_id_with_desc)
            else:
                self.messages.subTestBlockOpened(block_id, subTestResult="Error", flowId=test_id_with_desc)
                self.messages.testStdErr(test_id_with_desc, out="SubTest error: %s\n" % convert_error_to_string(err), flowId=test_id_with_desc)
                self.messages.blockClosed(block_id, flowId=test_id_with_desc)
        else:
            self.messages.subTestBlockOpened(block_id, subTestResult="Success", flowId=test_id_with_desc)
            self.messages.blockClosed(block_id, flowId=test_id_with_desc)