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

This commit is contained in:
2025-07-10 12:43:01 +02:00
parent 34d3c622ed
commit 4fac947eb7
+19 -37
View File
@@ -1,5 +1,4 @@
from collections import defaultdict
from pathlib import Path
from datetime import datetime
import json
import argparse
@@ -13,38 +12,6 @@ def stringify(obj):
return ', '.join(f"`{k}: {stringify(v)}`" for k, v in obj.items())
return f"`{str(obj)}`"
def extract_params(test):
# 1. Cas où les params sont déjà extraits
if "params" in test and test["params"]:
params = test["params"]
if isinstance(params, dict):
return "\n".join(f"- `{k}` = `{v}`" for k, v in params.items())
return f"- `{params}`"
# 2. Extraction depuis nodeid
nodeid = test.get("nodeid", "")
if "[" not in nodeid:
return None
params_str = nodeid.split("[")[-1].rstrip("]")
if not params_str:
return None
# Formatage des paramètres
lines = []
if "=" in params_str: # Format nommé
for param in params_str.split("-"):
if "=" in param:
key, val = param.split("=", 1)
lines.append(f"- `{key.strip()}` = `{val.strip()}`")
else:
lines.append(f"- `{param.strip()}`")
else: # Format positionnel
for i, val in enumerate(params_str.split("-"), 1):
lines.append(f"- Param {i}: `{val.strip()}`")
return "\n".join(lines)
def json_to_md_nested(json_path, md_path):
with open(json_path) as f:
data = json.load(f)
@@ -67,7 +34,8 @@ def json_to_md_nested(json_path, md_path):
for test in data["tests"]:
nodeid = test.get("nodeid", "")
parts = nodeid.split("::")
filename = parts[0]
# Nettoyage du nom de fichier
filename = parts[0].replace("tests\\", "").replace("tests/", "")
funcname = parts[1].split("[")[0]
grouped[filename][funcname].append(test)
@@ -81,9 +49,23 @@ def json_to_md_nested(json_path, md_path):
emoji = icons.get(outcome, "")
f.write(f"<details>\n<summary>{emoji} #{idx}</summary>\n\n")
param_string = extract_params(test)
if param_string:
f.write(f"- **Paramètres:**\n{param_string}\n")
# Extraction directe des paramètres depuis nodeid
nodeid = test.get("nodeid", "")
if "[" in nodeid:
params_str = nodeid.split("[")[-1].rstrip("]")
if params_str:
f.write("- **Paramètres:**\n")
if "=" in params_str: # Format nommé
for param in params_str.split("-"):
if "=" in param:
key, val = param.split("=", 1)
f.write(f" - `{key.strip()}` = `{val.strip()}`\n")
else:
f.write(f" - `{param.strip()}`\n")
else: # Format positionnel
for i, val in enumerate(params_str.split("-"), 1):
f.write(f" - Param {i}: `{val.strip()}`\n")
f.write("\n")
f.write(f"- **Statut:** {emoji} `{outcome}`\n")
duration = test.get("call", {}).get("duration")