Update conftest.py

This commit is contained in:
2025-08-27 20:37:51 +02:00
parent 9d012eb164
commit bf3052eaf8
+16 -67
View File
@@ -1,58 +1,5 @@
# conftest.py
import json
import os
'''
def safe_serialize(obj):
try:
json.dumps(obj)
return obj
except TypeError:
try:
return str(obj)
except Exception:
return "<unserializable>"
def serialize_object(obj):
result = {}
for attr in dir(obj):
if attr.startswith("_"):
continue
try:
value = getattr(obj, attr)
result[attr] = safe_serialize(value)
except Exception:
result[attr] = "<error>"
return result
# Conteneurs pour stocker les dumps
all_data = {
"session": {},
"tests": [] # chaque test contiendra item + call
}
def pytest_sessionstart(session):
all_data["session"] = serialize_object(session)
def pytest_runtest_makereport(item, call):
if call.when != "call":
return
item_dump = serialize_object(item)
call_dump = serialize_object(call)
all_data["tests"].append({
"nodeid": item.nodeid,
"item": item_dump,
"call": call_dump
})
def pytest_sessionfinish(session, exitstatus):
os.makedirs("ci-reports/markdown", exist_ok=True)
print("✅ Dumping runtime_params.json...")
with open("ci-reports/markdown/runtime_params.json", "w") as f:
json.dump(all_data, f, indent=2)
'''
import json
import os
import json, os, pathlib
def safe_serialize(obj):
try:
@@ -66,16 +13,12 @@ def safe_serialize(obj):
def serialize_callspec_between_getparam_and_setmulti(callspec):
data = {}
# Inclure uniquement ce qui est utile
if hasattr(callspec, "params"):
params = callspec.params
if isinstance(params, dict):
data["params"] = {str(k): safe_serialize(v) for k, v in params.items()}
else:
data["params"] = safe_serialize(params)
# Tu peux ajouter d'autres attributs utiles ici si besoin
for attr in ["id", "param_index"]:
if hasattr(callspec, attr):
try:
@@ -84,7 +27,6 @@ def serialize_callspec_between_getparam_and_setmulti(callspec):
data[attr] = safe_serialize(value)
except Exception:
data[attr] = "<error>"
return data
runtime_params = []
@@ -92,18 +34,25 @@ runtime_params = []
def pytest_runtest_makereport(item, call):
if call.when != "call":
return
entry = {
"nodeid": item.nodeid,
"callspec": None
}
entry = {"nodeid": item.nodeid, "callspec": None}
if hasattr(item, "callspec"):
entry["callspec"] = serialize_callspec_between_getparam_and_setmulti(item.callspec)
runtime_params.append(entry)
# === LOG DES PRINTS ===
LOGFILE = pathlib.Path("outputs/test-prints.log")
def pytest_sessionstart(session):
LOGFILE.parent.mkdir(parents=True, exist_ok=True)
LOGFILE.write_text("") # reset au début de la session
def pytest_runtest_logreport(report):
if report.capstdout and report.capstdout.strip():
with LOGFILE.open("a") as f:
f.write(f"\033[95m--- {report.nodeid} ({report.when}) ---\033[0m\n")
f.write(report.capstdout + "\n")
def pytest_sessionfinish(session, exitstatus):
os.makedirs("markdown", exist_ok=True)
with open("markdown/runtime_params.json", "w") as f:
json.dump(runtime_params, f, indent=2)
json.dump(runtime_params, f, indent=2)