(self, test)
| 809 | ) |
| 810 | |
| 811 | def run(self, test): |
| 812 | output = "" |
| 813 | "Run the given test case or test suite." |
| 814 | result = self._makeResult() |
| 815 | registerResult(result) |
| 816 | result.failfast = self.failfast |
| 817 | result.buffer = self.buffer |
| 818 | startTime = time.time() |
| 819 | startTestRun = getattr(result, "startTestRun", None) |
| 820 | if startTestRun is not None: |
| 821 | startTestRun() |
| 822 | try: |
| 823 | test(result) |
| 824 | finally: |
| 825 | stopTestRun = getattr(result, "stopTestRun", None) |
| 826 | if stopTestRun is not None: |
| 827 | stopTestRun() |
| 828 | stopTime = time.time() |
| 829 | timeTaken = stopTime - startTime |
| 830 | # filter results to output |
| 831 | if result.show_previous_results: |
| 832 | r = result.results["suites"] |
| 833 | else: |
| 834 | r = { |
| 835 | k: v |
| 836 | for (k, v) in list(result.results["suites"].items()) |
| 837 | if k not in result.previous_suite_runs |
| 838 | } |
| 839 | # print results based on verbosity |
| 840 | if result.show_all: |
| 841 | result.printSkippedDetail(r) |
| 842 | if result.show_errors_detail: |
| 843 | result.printErrorsDetail(r) |
| 844 | if result.show_individual_suite_results: |
| 845 | result.printIndividualSuiteResults(r) |
| 846 | if result.show_errors: |
| 847 | result.printErrorsOverview(r) |
| 848 | if result.show_overall_results: |
| 849 | result.printOverallSuiteResults(r) |
| 850 | run = result.testsRun |
| 851 | self.stream.writeln( |
| 852 | "Ran %d test case%s in %.4fs" % (run, run != 1 and "s" or "", timeTaken) |
| 853 | ) |
| 854 | self.stream.writeln() |
| 855 | |
| 856 | expectedFails = unexpectedSuccesses = skipped = 0 |
| 857 | try: |
| 858 | results = map( |
| 859 | len, |
| 860 | (result.expectedFailures, result.unexpectedSuccesses, result.skipped), |
| 861 | ) |
| 862 | except AttributeError: |
| 863 | pass |
| 864 | else: |
| 865 | expectedFails, unexpectedSuccesses, skipped = results |
| 866 | |
| 867 | infos = [] |
| 868 | if not result.wasSuccessful(): |
no test coverage detected