Coverage for src\zapy\test\test_runner.py: 100%
24 statements
« prev ^ index » next coverage.py v7.3.4, created at 2023-12-20 14:17 -0500
« prev ^ index » next coverage.py v7.3.4, created at 2023-12-20 14:17 -0500
1import unittest
2import unittest.case
3from unittest.runner import TextTestResult
4from typing import List
6from .models import TestResult
9class TestResult(TextTestResult):
10 def __init__(self, *args, **kwargs):
11 super().__init__(*args, **kwargs)
12 self.successes = []
14 def addSuccess(self, test):
15 super().addSuccess(test)
16 self.successes.append(test)
18 def as_list(self) -> List[TestResult]:
19 successes = [{
20 "method": test._testMethodName,
21 "status": "success",
22 } for test in self.successes]
23 errors = [{
24 "method": test._testMethodName,
25 "traceback": traceback_str,
26 "status": "error",
27 } for test, traceback_str in self.errors]
28 failures = [{
29 "method": test._testMethodName,
30 "traceback": traceback_str,
31 "status": "failure",
32 } for test, traceback_str in self.failures]
33 return successes + errors + failures
36def run_tests(*test_classes) -> TestResult:
37 loader = unittest.TestLoader()
38 suites_list = (loader.loadTestsFromTestCase(test_class) for test_class in test_classes)
39 test_suit = unittest.TestSuite(suites_list)
41 test_runner = unittest.runner.TextTestRunner(resultclass=TestResult)
42 test_result = test_runner.run(test_suit)
44 return test_result