--- a/eric6/PyUnit/UnittestDialog.py Sat May 01 14:27:38 2021 +0200 +++ b/eric6/PyUnit/UnittestDialog.py Thu Jun 03 11:39:23 2021 +0200 @@ -578,29 +578,25 @@ @rtype list of str """ selectedTests = [] - if parent is None: + itemsList = [ # top level - for index in range(self.discoveryList.topLevelItemCount()): - itm = self.discoveryList.topLevelItem(index) - if itm.checkState(0) == Qt.CheckState.Checked: - selectedTests.append( - itm.data(0, UnittestDialog.TestCaseNameRole)) - # ignore children because they are included implicitly - elif itm.childCount(): - # recursively check children - selectedTests.extend(self.__selectedTestCases(itm)) + self.discoveryList.topLevelItem(index) + for index in range(self.discoveryList.topLevelItemCount()) + ] if parent is None else [ + parent.child(index) + for index in range(parent.childCount()) + ] - else: - # parent item with children - for index in range(parent.childCount()): - itm = parent.child(index) - if itm.checkState(0) == Qt.CheckState.Checked: - selectedTests.append( - itm.data(0, UnittestDialog.TestCaseNameRole)) - # ignore children because they are included implicitly - elif itm.childCount(): - # recursively check children - selectedTests.extend(self.__selectedTestCases(itm)) + for itm in itemsList: + if ( + itm.checkState(0) == Qt.CheckState.Checked and + itm.childCount() == 0 + ): + selectedTests.append( + itm.data(0, UnittestDialog.TestCaseNameRole)) + if itm.childCount(): + # recursively check children + selectedTests.extend(self.__selectedTestCases(itm)) return selectedTests @@ -881,16 +877,22 @@ self.testResult = QtTestResult( self, self.failfastCheckBox.isChecked()) self.totalTests = test.countTestCases() - self.__failedTests = [] - self.__setRunningMode() - if cover: - cover.start() - test.run(self.testResult) - if cover: - cover.stop() - cover.save() - self.__setStoppedMode() - sys.path = self.savedSysPath + if self.totalTests == 0: + E5MessageBox.warning( + self, + self.tr("Unittest"), + self.tr("""No unittest were found. Aborting...""")) + else: + self.__failedTests = [] + self.__setRunningMode() + if cover: + cover.start() + test.run(self.testResult) + if cover: + cover.stop() + cover.save() + self.__setStoppedMode() + sys.path = self.savedSysPath def __UTPrepared(self, nrTests, exc_type, exc_value): """