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

This commit is contained in:
2025-07-10 16:22:01 +02:00
parent 46f1d1e6da
commit f74b3dcd20
+49 -23
View File
@@ -70,35 +70,61 @@ def json_to_md_nested(json_path, md_path, allure_dir=None):
f.write("\n")
if "collectors" in data:
f.write("## 📚 Collectés (Arborescence)\n")
f.write("## 📚 Collectors (Arborescence)\n")
# 1. Structurer les données
collector_tree = defaultdict(lambda: {
'files': defaultdict(list),
'outcome': None,
'result': None
})
# 1. Construire l'arborescence
tree = defaultdict(lambda: defaultdict(list))
for collector in data["collectors"]:
nodeid = collector.get("nodeid", "unknown")
outcome = collector.get("outcome", "unknown")
result = collector.get("result", [])
parts = nodeid.split("::")
if len(parts) >= 2:
file_path = parts[0]
test_name = parts[1]
dirs = file_path.split("/")
path = parts[0]
test_name = parts[1].split("[")[0] # Retire les paramètres
dirs = path.split("/")
current_level = tree
for dir_name in dirs[:-1]: # Parcourir les répertoires
current_level = current_level[dir_name]
current_level[dirs[-1]].append(test_name) # Ajouter le fichier et le test
# 2. Fonction récursive pour afficher l'arborescence
def print_tree(node, indent=0, f=f):
for key, value in sorted(node.items()):
if isinstance(value, dict):
f.write(" " * indent + f"- 📁 {key}\n")
print_tree(value, indent + 1, f)
elif isinstance(value, list):
f.write(" " * indent + f"- 📄 {key}\n")
for test in sorted(value):
f.write(" " * (indent + 1) + f" - 🧪 {test}\n")
print_tree(tree)
current = collector_tree
for dir_name in dirs[:-1]:
current = current[dir_name]['files']
current['files'][dirs[-1]].append({
'test_name': test_name,
'outcome': outcome,
'result': result
})
# 2. Fonction d'affichage récursive
def print_collector_tree(node, level=0, f=f):
indent = " " * level
for name, data in sorted(node.items()):
if name == 'files':
for file_name, tests in sorted(data.items()):
f.write(f"{indent}- <details><summary>📄 {file_name}</summary>\n\n")
for test in tests:
emoji = "" if test['outcome'] == "passed" else ""
f.write(f"{indent} - {emoji} `{test['test_name']}`\n")
if test['result']:
f.write(f"{indent} - **result:**\n```\n")
for item in test['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(f"{indent}</details>\n")
elif isinstance(data, dict):
f.write(f"{indent}- <details><summary>📁 {name}</summary>\n\n")
print_collector_tree(data, level + 1, f)
f.write(f"{indent}</details>\n")
print_collector_tree(collector_tree)
f.write("\n")
if "tests" in data and "summary" in data: