Update json_to_md.py
Run Pytest with Allure and Coverage Reports / tests (push) Successful in 51s
Run Pytest with Allure and Coverage Reports / deploy (push) Has been skipped

This commit is contained in:
2025-07-10 16:45:31 +02:00
parent 8604533773
commit e07e4af00b
+56 -27
View File
@@ -70,37 +70,66 @@ def json_to_md_nested(json_path, md_path, allure_dir=None):
f.write("\n")
if "collectors" in data:
f.write("## 📚 Collectés (Par Fichier)\n\n")
f.write("## 🌳 Collectés (Arborescence)\n\n")
# 1. Filtrage et nettoyage des collectors valides
valid_collectors = []
# 1. Construire l'arborescence
tree = {}
for collector in data["collectors"]:
nodeid = collector.get("nodeid", "")
if "::" in nodeid: # Uniquement les nodeids valides
filename, testname = nodeid.split("::", 1)
filename = filename.replace("tests/", "").replace("tests\\", "")
testname = testname.split("[")[0] # Enlève les paramètres
valid_collectors.append((filename, testname, collector))
# 2. Groupement par fichier
files = defaultdict(list)
for filename, testname, collector in valid_collectors:
files[filename].append((testname, collector))
# 3. Affichage structuré
for filename, tests in sorted(files.items()):
f.write(f"### 📄 {filename}\n")
for testname, collector in sorted(tests):
outcome = collector.get("outcome", "unknown")
emoji = "" if outcome == "passed" else ""
if not nodeid or "::" not in nodeid:
continue
f.write(f"- {emoji} `{testname}`\n")
if collector.get("result"):
f.write(" ```\n")
for item in collector["result"]:
f.write(f" {str(item)}\n")
f.write(" ```\n")
f.write("\n")
path, testname = nodeid.split("::", 1)
testname = testname.split("[")[0] # Enlever les paramètres
# Construire la structure de dossiers
current = tree
parts = path.split("/")
for part in parts[:-1]: # Parcourir les dossiers
if part not in current:
current[part] = {}
current = current[part]
# Ajouter le test
filename = parts[-1]
if filename not in current:
current[filename] = []
current[filename].append((testname, collector))
# 2. Fonction récursive d'affichage
def print_tree(node, indent=0):
for name, value in sorted(node.items()):
if isinstance(value, list): # Fichier avec tests
f.write(" " * indent + f"<details>\n")
f.write(" " * indent + f"<summary>📄 {name}</summary>\n\n")
for testname, collector in value:
outcome = collector.get("outcome", "unknown")
emoji = "" if outcome == "passed" else ""
f.write(" " * (indent+1) + f"<details>\n")
f.write(" " * (indent+1) + f"<summary>{emoji} {testname}</summary>\n\n")
f.write(" " * (indent+2) + f"- **outcome:** `{outcome}`\n")
if collector.get("result"):
f.write(" " * (indent+2) + "- **result:**\n```\n")
for item in collector["result"]:
if isinstance(item, dict):
for k, v in item.items():
f.write(f" {k}: {v}\n")
else:
f.write(f" {item}\n")
f.write("```\n")
f.write(" " * (indent+1) + "</details>\n\n")
f.write(" " * indent + "</details>\n\n")
else: # Dossier
f.write(" " * indent + f"<details>\n")
f.write(" " * indent + f"<summary>📁 {name}</summary>\n\n")
print_tree(value, indent + 1)
f.write(" " * indent + "</details>\n\n")
print_tree(tree)