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) |
omniflo_results.json (immer) |
omniflo_tests.dxf (save: dxf) |
omniflo_export.csv |
|
bin\run_tests.bat --runall
|
@@ -105,7 +104,6 @@ tests/
kseinaus_tests.dxf
omniflo_results.json
omniflo_tests.dxf
omniflo_export.csv # CSV-Export (Omniflo-spezifisch)
reference/ # Abgenommene Referenzdaten (in Git)
kreisel_ref.dxf
...
@@ -173,7 +171,7 @@ Die Python-Tests pruefen:
- **Attribut-Werte** gegen die Testdefinitionen (JSON)
- **DXF-Geometrie** mit ezdxf (Bloecke, Positionen, Radien)
- **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`).
@@ -381,8 +379,9 @@ def <modul>_ref_dxf():
| Klasse | Prueft |
|---|---|
| `TestOmnifloExportUnit` | Mock-Export: Merkmale, Datentypen, Vollstaendigkeit (ohne BricsCAD) |
| `TestOmnifloExportCSV` | CSV aus BricsCAD: Header, Spalten, JSON-Merkmale |
| `TestOmnifloExportUnit` | Mock-Export ueber `lib/export_csv.py`: Merkmale, Datentypen, Sum-Zeile, Vollstaendigkeit (ohne BricsCAD) |
| `TestOmnifloResults` | omniflo_results.json aus BricsCAD: Testfaelle vollstaendig, Status OK, Hoehe |
| `TestOmnifloReferenceCSV` | CSV-Export aus `lib/export_csv.py` gegen abgenommene Referenz-CSV |
## Umgebungsvariablen
+20 -17
View File
@@ -32,8 +32,18 @@ def _reference_dir():
def _load_json(path):
with open(path, "r", encoding="utf-8") as f:
return json.load(f)
"""Laedt JSON, tolerant gegenueber BricsCAD-Ausgaben.
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 ---
@@ -68,22 +78,15 @@ def omniflo_testdata():
@pytest.fixture
def omniflo_csv():
"""Laedt den Inhalt der omniflo_export.csv aus output/."""
import csv as _csv
path = os.path.join(_output_dir(), "omniflo_export.csv")
def omniflo_results():
"""Laedt die Omniflo-Ergebnisse aus output/omniflo_results.json."""
path = os.path.join(_output_dir(), "omniflo_results.json")
if not os.path.exists(path):
pytest.skip(
"omniflo_export.csv nicht vorhanden - "
"TEST_OMNIFLO_EXPORT in BricsCAD ausfuehren"
)
rows = []
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}
pytest.skip("omniflo_results.json nicht vorhanden - TEST_OMNIFLO in BricsCAD ausfuehren")
data = _load_json(path)
if not data:
pytest.skip("omniflo_results.json ist leer")
return data
# --- Kreisel Fixtures ---