diff options
| author | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-08 14:19:01 +0200 |
|---|---|---|
| committer | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-08 14:19:01 +0200 |
| commit | 1ccdd8e0afc48f50deb8002fc717256bb2d99536 (patch) | |
| tree | 57fa40cfae59a5d0d9dbcdd76cb084962f367f85 | |
| parent | 44e38436eadc5320e0b08f649103828213ef465f (diff) | |
| download | testreport-1ccdd8e0afc48f50deb8002fc717256bb2d99536.tar.gz testreport-1ccdd8e0afc48f50deb8002fc717256bb2d99536.zip | |
add test class and finish parsing of csv
| -rw-r--r-- | parse_data.py | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/parse_data.py b/parse_data.py index 92fa038..16b7bd9 100644 --- a/parse_data.py +++ b/parse_data.py @@ -1,24 +1,63 @@ +import csv -class Category: - failed = False - tests = [] +class Test: + def __init__(self, number: int, description: str): + self.number: int = number + self.description: str = description + self.failed: bool = False + self.logs: list[str, str, str] = [] # log_type, timestamp, message + + def add_log(self, log_type: str, timestamp: str, fail_message: str): + if log_type == "FAIL": + self.failed = True + + new_log = { + "log_type": log_type, + "timestamp": timestamp, + "fail_message": fail_message + } + self.logs.append(new_log) +class Category: def __init__(self, name: str): - self.name = name + self.name: str = name + self.failed: bool = False + self.tests: list[Test] = [] def is_number_in_tests(self, number: int) -> bool: - return self.tests[-1] == number + return self.tests and self.tests[-1].number == number def add_test(self, log_type: str, number: int, timestamp: str, description: str, fail_message: str): - # TODO - # adds the test to the tests-list. if the test is a fail, the whole category also fails. - # if the test number is already registered (as a fail), add this fail_message to the messages of that test - pass + if log_type == "FAIL": + self.failed = True + + if not self.is_number_in_tests(number): + new_test = Test(number, description) + self.tests.append(new_test) + + self.tests[-1].add_log(log_type, timestamp, fail_message) def find_category_in_data(name: str, data: list[Category]) -> int: - # TODO - # returns the index of the category with the same name in data - # return -1, if the category cannot be found + for index, category in enumerate(data): + if category.name == name: + return index return -1 -data = [] # List of Category objects \ No newline at end of file +data = [] # List of Category objects + +# Define the CSV filename +csv_filename = "data.csv" + +with open(csv_filename, mode="r", encoding="utf-8") as file: + csv_reader = csv.DictReader(file) # Reads as a dictionary + for row in csv_reader: + log_type, timestamp, category_name, number, test_description, fail_message = row.values() + + index = find_category_in_data(category_name, data) + if index == -1: + category = Category(category_name) + data.append(category) + else: + category = data[index] + + category.add_test(log_type, number, timestamp, test_description, fail_message) \ No newline at end of file |