Prints the test summary, how many tests failed, how long it took, etc

        :param result: result class to use to print summary
        :param time_taken: the time all tests took to run

def print_summary(self, result, time_taken):
        """
        Prints the test summary, how many tests failed, how long it took, etc

        :param result: result class to use to print summary
        :param time_taken: the time all tests took to run
        """
        if hasattr(result, "separator2"):
            self.stream.writeln(result.separator2)

        self.stream.writeln("Ran {number_of_tests} test{s} in {time:.3f}s\n".format(
            number_of_tests=result.testsRun, s="s" if result.testsRun != 1 else "", time=time_taken
        ))

        info = []
        if not result.wasSuccessful():
            self.stream.write("FAILED")

            if result.failures:
                info.append("failures={}".format(len(result.failures)))
            if result.errors:
                info.append("errors={}".format(len(result.errors)))
        else:
            self.stream.write("OK")

        if result.skipped:
            info.append("skipped={}".format(len(result.skipped)))
        if result.expectedFailures:
            info.append("expected failures={}".format(len(result.expectedFailures)))
        if result.unexpectedSuccesses:
            info.append("unexpected successes={}".format(len(result.unexpectedSuccesses)))

        if info:
            self.stream.writeln(" ({})".format(", ".join(info)))
        else:
            self.stream.write("\n")