eric6/PyUnit/UnittestDialog.py

changeset 8543
29d7b90ede28
parent 8380
73ef1edca602
child 8576
fe1957c69854
equal deleted inserted replaced
8530:db1794734aec 8543:29d7b90ede28
171 # These are for untranslated/partially translated situations 171 # These are for untranslated/partially translated situations
172 "^Failure: ", 172 "^Failure: ",
173 "^Error: ", 173 "^Error: ",
174 ] 174 ]
175 175
176 self.__failedTests = [] 176 self.__failedTests = set()
177 177
178 # now connect the debug server signals if called from the eric IDE 178 # now connect the debug server signals if called from the eric IDE
179 if self.__dbs: 179 if self.__dbs:
180 self.__dbs.utDiscovered.connect(self.__UTDiscovered) 180 self.__dbs.utDiscovered.connect(self.__UTDiscovered)
181 self.__dbs.utPrepared.connect(self.__UTPrepared) 181 self.__dbs.utPrepared.connect(self.__UTPrepared)
764 coverageFile = os.path.abspath("unittest") 764 coverageFile = os.path.abspath("unittest")
765 workdir = "" 765 workdir = ""
766 clientType = "Python3" 766 clientType = "Python3"
767 sysPath = [] 767 sysPath = []
768 if failedOnly and self.__failedTests: 768 if failedOnly and self.__failedTests:
769 failed = self.__failedTests[:] 769 failed = list(self.__failedTests)
770 if discover: 770 if discover:
771 workdir = discoveryStart 771 workdir = discoveryStart
772 discover = False 772 discover = False
773 else: 773 else:
774 failed = [] 774 failed = []
775 self.__failedTests = [] 775 self.__failedTests = set()
776 self.__dbs.remoteUTPrepare( 776 self.__dbs.remoteUTPrepare(
777 testFileName, self.testName, testName, failed, 777 testFileName, self.testName, testName, failed,
778 self.coverageCheckBox.isChecked(), coverageFile, 778 self.coverageCheckBox.isChecked(), coverageFile,
779 self.coverageEraseCheckBox.isChecked(), clientType=clientType, 779 self.coverageEraseCheckBox.isChecked(), clientType=clientType,
780 forProject=self.__forProject, workdir=workdir, 780 forProject=self.__forProject, workdir=workdir,
815 815
816 # now try to generate the testsuite 816 # now try to generate the testsuite
817 try: 817 try:
818 testLoader = unittest.TestLoader() 818 testLoader = unittest.TestLoader()
819 if failedOnly and self.__failedTests: 819 if failedOnly and self.__failedTests:
820 failed = self.__failedTests[:] 820 failed = list(self.__failedTests)
821 if discover: 821 if discover:
822 os.chdir(discoveryStart) 822 os.chdir(discoveryStart)
823 discover = False 823 discover = False
824 else: 824 else:
825 failed = [] 825 failed = []
836 if failedOnly and self.__failedTests: 836 if failedOnly and self.__failedTests:
837 if module: 837 if module:
838 failed = [t.split(".", 1)[1] 838 failed = [t.split(".", 1)[1]
839 for t in self.__failedTests] 839 for t in self.__failedTests]
840 else: 840 else:
841 failed = self.__failedTests[:] 841 failed = list(self.__failedTests)
842 test = testLoader.loadTestsFromNames( 842 test = testLoader.loadTestsFromNames(
843 failed, module) 843 failed, module)
844 else: 844 else:
845 test = testLoader.loadTestsFromName( 845 test = testLoader.loadTestsFromName(
846 testName, module) 846 testName, module)
881 E5MessageBox.warning( 881 E5MessageBox.warning(
882 self, 882 self,
883 self.tr("Unittest"), 883 self.tr("Unittest"),
884 self.tr("""No unittest were found. Aborting...""")) 884 self.tr("""No unittest were found. Aborting..."""))
885 else: 885 else:
886 self.__failedTests = [] 886 self.__failedTests = set()
887 self.__setRunningMode() 887 self.__setRunningMode()
888 if cover: 888 if cover:
889 cover.start() 889 cover.start()
890 test.run(self.testResult) 890 test.run(self.testResult)
891 if cover: 891 if cover:
1033 self.failCount += 1 1033 self.failCount += 1
1034 self.progressCounterFailureCount.setText(str(self.failCount)) 1034 self.progressCounterFailureCount.setText(str(self.failCount))
1035 itm = QListWidgetItem(self.tr("Failure: {0}").format(test)) 1035 itm = QListWidgetItem(self.tr("Failure: {0}").format(test))
1036 itm.setData(UnittestDialog.ErrorsInfoRole, (test, exc)) 1036 itm.setData(UnittestDialog.ErrorsInfoRole, (test, exc))
1037 self.errorsListWidget.insertItem(0, itm) 1037 self.errorsListWidget.insertItem(0, itm)
1038 self.__failedTests.append(testId) 1038 self.__failedTests.add(testId)
1039 1039
1040 def testErrored(self, test, exc, testId): 1040 def testErrored(self, test, exc, testId):
1041 """ 1041 """
1042 Public method called if a test errors. 1042 Public method called if a test errors.
1043 1043
1048 self.errorCount += 1 1048 self.errorCount += 1
1049 self.progressCounterErrorCount.setText(str(self.errorCount)) 1049 self.progressCounterErrorCount.setText(str(self.errorCount))
1050 itm = QListWidgetItem(self.tr("Error: {0}").format(test)) 1050 itm = QListWidgetItem(self.tr("Error: {0}").format(test))
1051 itm.setData(UnittestDialog.ErrorsInfoRole, (test, exc)) 1051 itm.setData(UnittestDialog.ErrorsInfoRole, (test, exc))
1052 self.errorsListWidget.insertItem(0, itm) 1052 self.errorsListWidget.insertItem(0, itm)
1053 self.__failedTests.append(testId) 1053 self.__failedTests.add(testId)
1054 1054
1055 def testSkipped(self, test, reason, testId): 1055 def testSkipped(self, test, reason, testId):
1056 """ 1056 """
1057 Public method called if a test was skipped. 1057 Public method called if a test was skipped.
1058 1058
1276 """ 1276 """
1277 super().addError(test, err) 1277 super().addError(test, err)
1278 tracebackLines = self._exc_info_to_string(err, test) 1278 tracebackLines = self._exc_info_to_string(err, test)
1279 self.parent.testErrored(str(test), tracebackLines, test.id()) 1279 self.parent.testErrored(str(test), tracebackLines, test.id())
1280 1280
1281 def addSubTest(self, test, subtest, err):
1282 """
1283 Public method called for each subtest to record its result.
1284
1285 @param test reference to the test object
1286 @param subtest reference to the subtest object
1287 @param err error traceback
1288 """
1289 if err is not None:
1290 super().addSubTest(test, subtest, err)
1291 tracebackLines = self._exc_info_to_string(err, test)
1292 if issubclass(err[0], test.failureException):
1293 self.parent.testFailed(
1294 str(subtest), tracebackLines, test.id())
1295 else:
1296 self.parent.testErrored(
1297 str(subtest), tracebackLines, test.id())
1298
1281 def addSkip(self, test, reason): 1299 def addSkip(self, test, reason):
1282 """ 1300 """
1283 Public method called if a test was skipped. 1301 Public method called if a test was skipped.
1284 1302
1285 @param test reference to the test object 1303 @param test reference to the test object

eric ide

mercurial