omniflo unittest liest aktuell nur die json Exports von Bricscad

This commit is contained in:
2026-07-02 14:03:55 +02:00
parent 8a424d292e
commit 3869f8b624
2 changed files with 24 additions and 22 deletions
+4 -5
View File
@@ -29,7 +29,6 @@ tests/output/ |
(keine Zeichnung) (save: null) | (keine Zeichnung) (save: null) |
omniflo_results.json (immer) | omniflo_results.json (immer) |
omniflo_tests.dxf (save: dxf) | omniflo_tests.dxf (save: dxf) |
omniflo_export.csv |
| |
bin\run_tests.bat --runall bin\run_tests.bat --runall
| |
@@ -105,7 +104,6 @@ tests/
kseinaus_tests.dxf kseinaus_tests.dxf
omniflo_results.json omniflo_results.json
omniflo_tests.dxf omniflo_tests.dxf
omniflo_export.csv # CSV-Export (Omniflo-spezifisch)
reference/ # Abgenommene Referenzdaten (in Git) reference/ # Abgenommene Referenzdaten (in Git)
kreisel_ref.dxf kreisel_ref.dxf
... ...
@@ -173,7 +171,7 @@ Die Python-Tests pruefen:
- **Attribut-Werte** gegen die Testdefinitionen (JSON) - **Attribut-Werte** gegen die Testdefinitionen (JSON)
- **DXF-Geometrie** mit ezdxf (Bloecke, Positionen, Radien) - **DXF-Geometrie** mit ezdxf (Bloecke, Positionen, Radien)
- **Referenz-Vergleich** gegen abgenommene Referenz-DXF - **Referenz-Vergleich** gegen abgenommene Referenz-DXF
- **CSV-Export** (Omniflo: Spalten, Merkmale, Datentypen) - **CSV-Export** ueber `lib/export_csv.py` (Omniflo: Spalten, Merkmale, Sum-Zeile, Datentypen)
Tests, deren Eingabedaten fehlen (z.B. kein BricsCAD-Lauf), werden automatisch uebersprungen (`pytest.skip`). Tests, deren Eingabedaten fehlen (z.B. kein BricsCAD-Lauf), werden automatisch uebersprungen (`pytest.skip`).
@@ -381,8 +379,9 @@ def <modul>_ref_dxf():
| Klasse | Prueft | | Klasse | Prueft |
|---|---| |---|---|
| `TestOmnifloExportUnit` | Mock-Export: Merkmale, Datentypen, Vollstaendigkeit (ohne BricsCAD) | | `TestOmnifloExportUnit` | Mock-Export ueber `lib/export_csv.py`: Merkmale, Datentypen, Sum-Zeile, Vollstaendigkeit (ohne BricsCAD) |
| `TestOmnifloExportCSV` | CSV aus BricsCAD: Header, Spalten, JSON-Merkmale | | `TestOmnifloResults` | omniflo_results.json aus BricsCAD: Testfaelle vollstaendig, Status OK, Hoehe |
| `TestOmnifloReferenceCSV` | CSV-Export aus `lib/export_csv.py` gegen abgenommene Referenz-CSV |
## Umgebungsvariablen ## Umgebungsvariablen
+20 -17
View File
@@ -32,8 +32,18 @@ def _reference_dir():
def _load_json(path): def _load_json(path):
with open(path, "r", encoding="utf-8") as f: """Laedt JSON, tolerant gegenueber BricsCAD-Ausgaben.
return json.load(f)
AutoLISP schreibt Dateien (write-line) im ANSI-Codepage des Systems,
nicht in UTF-8 - Sonderzeichen (z.B. Grad-Zeichen in Beschreibungen)
koennen daher nicht als UTF-8 dekodierbar sein. Fallback auf cp1252.
"""
try:
with open(path, "r", encoding="utf-8") as f:
return json.load(f)
except UnicodeDecodeError:
with open(path, "r", encoding="cp1252") as f:
return json.load(f)
# --- Foerderer Fixtures --- # --- Foerderer Fixtures ---
@@ -68,22 +78,15 @@ def omniflo_testdata():
@pytest.fixture @pytest.fixture
def omniflo_csv(): def omniflo_results():
"""Laedt den Inhalt der omniflo_export.csv aus output/.""" """Laedt die Omniflo-Ergebnisse aus output/omniflo_results.json."""
import csv as _csv path = os.path.join(_output_dir(), "omniflo_results.json")
path = os.path.join(_output_dir(), "omniflo_export.csv")
if not os.path.exists(path): if not os.path.exists(path):
pytest.skip( pytest.skip("omniflo_results.json nicht vorhanden - TEST_OMNIFLO in BricsCAD ausfuehren")
"omniflo_export.csv nicht vorhanden - " data = _load_json(path)
"TEST_OMNIFLO_EXPORT in BricsCAD ausfuehren" if not data:
) pytest.skip("omniflo_results.json ist leer")
rows = [] return data
with open(path, "r", encoding="utf-8") as f:
reader = _csv.reader(f, delimiter=";")
header = next(reader)
for row in reader:
rows.append(row)
return {"header": header, "rows": rows}
# --- Kreisel Fixtures --- # --- Kreisel Fixtures ---