diff options
| author | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-08 15:31:14 +0200 |
|---|---|---|
| committer | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-08 15:31:14 +0200 |
| commit | 07741cdf203e3a7e339ef0b65c43107ac83877f0 (patch) | |
| tree | 85d888ea1eb17daaa053308844344ac3a5ede10a | |
| parent | ab279cd88d6367f3572dd244d50b04dcebfff099 (diff) | |
| download | testreport-07741cdf203e3a7e339ef0b65c43107ac83877f0.tar.gz testreport-07741cdf203e3a7e339ef0b65c43107ac83877f0.zip | |
add a cli to give the path of the executable and pipe the results to csv-parser
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | create_report.py | 10 | ||||
| -rw-r--r-- | parse_data.py | 42 |
3 files changed, 46 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore index c5e2afa..58420ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ report.html -__pycache__ \ No newline at end of file +__pycache__ +*.exe \ No newline at end of file diff --git a/create_report.py b/create_report.py index 107f62c..c70b094 100644 --- a/create_report.py +++ b/create_report.py @@ -1,6 +1,12 @@ -from parse_data import data, stats - +from parse_data import parse_data from jinja2 import Environment, FileSystemLoader +import argparse + +parser = argparse.ArgumentParser(prog='test_report_manager') +parser.add_argument('executable', help="executable to parse") +args = parser.parse_args() + +data, stats = parse_data(args.executable) # Load the template from the current directory env = Environment(loader=FileSystemLoader('.')) diff --git a/parse_data.py b/parse_data.py index 16b7bd9..8c56c90 100644 --- a/parse_data.py +++ b/parse_data.py @@ -1,4 +1,6 @@ import csv +import subprocess +import io class Test: def __init__(self, number: int, description: str): @@ -43,13 +45,18 @@ def find_category_in_data(name: str, data: list[Category]) -> int: return index return -1 -data = [] # List of Category objects +def parse_data(program_name: str): + data = [] # List of Category objects + process = subprocess.Popen(['HVSensorTest.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = process.communicate() -# Define the CSV filename -csv_filename = "data.csv" + if stderr: + print("Error:", stderr.decode()) -with open(csv_filename, mode="r", encoding="utf-8") as file: - csv_reader = csv.DictReader(file) # Reads as a dictionary + stdout_str = stdout.decode() + stdout_file = io.StringIO(stdout_str) + + csv_reader = csv.DictReader(stdout_file) # Rows are dictionaries for row in csv_reader: log_type, timestamp, category_name, number, test_description, fail_message = row.values() @@ -60,4 +67,27 @@ with open(csv_filename, mode="r", encoding="utf-8") as file: else: category = data[index] - category.add_test(log_type, number, timestamp, test_description, fail_message) \ No newline at end of file + category.add_test(log_type, number, timestamp, test_description, fail_message) + + # Final test statistics + stats = { + "failed": False, + "number_tests": 0, + "number_passed": 0, + "percentage_passed": 0, + "number_failed": 0, + "percentage_failed": 0, + } + + for category in data: + if category.failed: + stats["number_failed"] = stats["number_failed"] + 1 + stats["failed"] = True + else: + stats["number_passed"] = stats["number_passed"] + 1 + + stats["number_tests"] = len(data) + stats["percentage_passed"] = round((stats["number_passed"] / len(data)) * 100, 1) + stats["percentage_failed"] = 100 - stats["percentage_passed"] + + return data, stats \ No newline at end of file |