Calculate and verify test metrics and KPIs for a test run
Preconditions (2)
✅ Expected Result: The calculated pass, fail, and block percentages are correct and match expected values
import unittest class TestMetricsKPIs(unittest.TestCase): def setUp(self): # Sample test results data: list of statuses self.test_results = [ 'Passed', 'Failed', 'Passed', 'Blocked', 'Passed', 'Failed', 'Passed', 'Passed', 'Blocked', 'Passed' ] self.total = len(self.test_results) def test_metrics_calculation(self): passed_count = self.test_results.count('Passed') failed_count = self.test_results.count('Failed') blocked_count = self.test_results.count('Blocked') pass_percentage = (passed_count / self.total) * 100 fail_percentage = (failed_count / self.total) * 100 block_percentage = (blocked_count / self.total) * 100 # Assertions self.assertEqual(self.total, 10, "Total test cases should be 10") self.assertEqual(passed_count, 6, "Passed test cases should be 6") self.assertEqual(failed_count, 2, "Failed test cases should be 2") self.assertEqual(blocked_count, 2, "Blocked test cases should be 2") self.assertAlmostEqual(pass_percentage, 60.0, places=1, msg="Pass percentage should be 60.0") self.assertAlmostEqual(fail_percentage, 20.0, places=1, msg="Fail percentage should be 20.0") self.assertAlmostEqual(block_percentage, 20.0, places=1, msg="Block percentage should be 20.0") if __name__ == '__main__': unittest.main()
The setUp method prepares the test data, a list of test case results with statuses.
We count how many test cases passed, failed, and were blocked using the count() method.
Then, we calculate the percentages by dividing each count by the total number of test cases and multiplying by 100.
Assertions check that counts and percentages match expected values. We use assertEqual for counts and assertAlmostEqual for percentages to allow small rounding differences.
This keeps the test clear, simple, and easy to maintain.
Now add data-driven testing with 3 different test result sets and verify metrics for each
Total test cases = 100
Test cases executed = 80
Test cases passed = 60
Defects found = 10Total tests = 50
Passed tests = 45
Failed tests = 10Pass the test and this pattern moves unknown