[TEST] Referenz-Namenskonvention vereinheitlicht + Kreisel/Omniflo-Referenzen abgenommen
Konvention: Eine Referenz traegt IMMER denselben Dateinamen wie das Ist- Ergebnis in output/ (nur anderes Verzeichnis). Referenz festlegen = Datei aus output/ unter gleichem Namen nach reference/ kopieren. - tests/README.md: neuer Abschnitt "Referenz-Namenskonvention (vereinheitlicht)" mit Regel/Tabelle/copy-Beispiel; Namenskonventions-Tabelle, Fixture-Vorlage (<modul>_tests.dxf statt <modul>_ref.dxf) und die Workflow-Referenzabschnitte angeglichen. - tests/conftest.py: kreisel_ref_dxf laedt reference/kreisel_tests.dxf (vorher kreisel_ref.dxf). - tests/test_omniflo.py: Referenz reference/omniflo_export.csv (vorher omniflo_export_reference.csv). - Referenzen abgenommen und in Git aufgenommen: reference/kreisel_tests.dxf (Umbenennung des Tippfehlers Kresel_ref.dxf), reference/omniflo_export.csv (aus geprueftem output/omniflo_export.csv). Der Batch-Vergleich --diff_references matchte schon immer ueber identische Basisnamen und bleibt unveraendert. Der Kreisel-Referenztest laeuft dadurch jetzt statt zu skippen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+54
-7
@@ -138,8 +138,8 @@ etc.) ist davon unberuehrt (GUI standardmaessig an).
|
||||
|
||||
3. **Kommandozeile**: Ergebnisse validieren:
|
||||
- `bin\run_tests.bat --check` — pytest prueft die Ergebnisse aus `output/` gegen Testdefinitionen und Referenzdaten (optional: einzelnes Modul, z.B. `--check test_kreisel.py`)
|
||||
- `bin\run_tests.bat --diff_references` — vergleicht die CSVs in `output/` gegen `reference/` und oeffnet bei Unterschieden das Diff-Tool (meld); optional eine einzelne Datei, z.B. `--diff_references kreisel_tests_export.csv`
|
||||
- Referenz aktualisieren (nach geprueftem Lauf): die betreffende(n) Datei(en) aus `output/` manuell nach `reference/` kopieren (es gibt keinen eigenen Schalter dafuer)
|
||||
- `bin\run_tests.bat --diff_references` — vergleicht die CSVs in `output/` gegen `reference/` (gleicher Dateiname, siehe Abschnitt "Referenz-Namenskonvention") und oeffnet bei Unterschieden das Diff-Tool (meld); optional eine einzelne Datei, z.B. `--diff_references kreisel_tests_export.csv`
|
||||
- Referenz aktualisieren (nach geprueftem Lauf): die betreffende(n) Datei(en) aus `output/` unter DEMSELBEN Namen nach `reference/` kopieren (es gibt keinen eigenen Schalter dafuer)
|
||||
|
||||
## Verzeichnisstruktur
|
||||
|
||||
@@ -202,9 +202,45 @@ tests/
|
||||
<basis>_export.csv # EXPORTCSV je Quelldatei, nur nach TEST_EXPORT_ALL
|
||||
<basis>_sivas.csv # EXPORTSIVAS je Quelldatei, nur nach TEST_EXPORT_ALL
|
||||
reference/ # Abgenommene Referenzdaten (in Git): *_results.json,
|
||||
... # *_tests_export.csv / *_tests_sivas.csv, export_raw.json
|
||||
... # *_tests_export.csv / *_tests_sivas.csv, *_tests.dxf,
|
||||
... # omniflo_export.csv, export_raw.json
|
||||
```
|
||||
|
||||
## Referenz-Namenskonvention (vereinheitlicht)
|
||||
|
||||
**Eine Referenz traegt IMMER denselben Dateinamen wie das zugehoerige Ist-Ergebnis
|
||||
in `output/`.** Der einzige Unterschied ist das Verzeichnis:
|
||||
|
||||
```
|
||||
output/<datei> # Ist-Ergebnis (bei jedem Lauf neu, nicht in Git)
|
||||
reference/<datei> # abgenommener Soll-Stand (identischer Name, in Git)
|
||||
```
|
||||
|
||||
Damit gilt durchgehend: **Referenz festlegen = Datei aus `output/` nach `reference/`
|
||||
kopieren** - kein Umbenennen, kein Suffix. Beispiele:
|
||||
|
||||
| Ist-Ergebnis in `output/` | Referenz in `reference/` |
|
||||
| --- | --- |
|
||||
| `kreisel_tests.dxf` | `kreisel_tests.dxf` |
|
||||
| `kreisel_tests_export.csv` | `kreisel_tests_export.csv` |
|
||||
| `foerderer_results.json` | `foerderer_results.json` |
|
||||
| `omniflo_export.csv` | `omniflo_export.csv` |
|
||||
|
||||
```cmd
|
||||
copy tests\output\kreisel_tests.dxf tests\reference\kreisel_tests.dxf
|
||||
```
|
||||
|
||||
Frueher gab es zwei Ausreisser, die bewusst auf dieses Schema gezogen wurden
|
||||
(nicht mehr verwenden):
|
||||
|
||||
- `reference/kreisel_ref.dxf` (bzw. der Tippfehler `Kresel_ref.dxf`) -> jetzt
|
||||
`reference/kreisel_tests.dxf`
|
||||
- `reference/omniflo_export_reference.csv` -> jetzt `reference/omniflo_export.csv`
|
||||
|
||||
Die pytest-Fixtures und -Checks suchen ausschliesslich nach dem vereinheitlichten
|
||||
Namen; fehlt die Referenz, wird der Vergleich mit einem Hinweis uebersprungen
|
||||
(kein Fehler).
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. LISP-Tests in BricsCAD ausfuehren
|
||||
@@ -274,13 +310,21 @@ Tests, deren Eingabedaten fehlen (z.B. kein BricsCAD-Lauf), werden automatisch u
|
||||
### 3. Referenz erstellen/aktualisieren
|
||||
|
||||
Nach einem erfolgreichen, geprueften Testlauf die betreffende(n) Ergebnisdatei(en)
|
||||
manuell aus `output/` nach `reference/` kopieren (nur bei bestandenen Tests). Es gibt
|
||||
keinen eigenen Batch-Schalter dafuer.
|
||||
manuell aus `output/` unter DEMSELBEN Dateinamen nach `reference/` kopieren (nur bei
|
||||
bestandenen Tests, siehe Abschnitt "Referenz-Namenskonvention"). Es gibt keinen
|
||||
eigenen Batch-Schalter dafuer.
|
||||
|
||||
```cmd
|
||||
copy tests\output\<datei> tests\reference\<datei>
|
||||
```
|
||||
|
||||
Beispiel (Kreisel-DXF und Omniflo-CSV als Referenz festlegen):
|
||||
|
||||
```cmd
|
||||
copy tests\output\kreisel_tests.dxf tests\reference\kreisel_tests.dxf
|
||||
copy tests\output\omniflo_export.csv tests\reference\omniflo_export.csv
|
||||
```
|
||||
|
||||
Zum Vergleich der aktuellen CSVs gegen die Referenz (mit Diff-Tool meld):
|
||||
|
||||
```cmd
|
||||
@@ -419,6 +463,7 @@ Aus dem Basisnamen `<name>` in `alltests.json` entstehen durch Konvention:
|
||||
| Export-Funktion | `<name>:export-results` | `kreisel:export-results` |
|
||||
| JSON-Ergebnis | `output/<name>_results.json` | `output/kreisel_results.json` |
|
||||
| DXF/DWG-Datei | `output/<name>_tests.dxf/.dwg` | `output/kreisel_tests.dxf` |
|
||||
| Referenz (Soll) | `reference/<gleicher Name wie output>` | `reference/kreisel_tests.dxf` |
|
||||
|
||||
Die Export-Funktion **muss** exakt so heissen: `<name>:export-results` (Namespace-Notation mit Doppelpunkt).
|
||||
Sie nimmt genau einen Parameter entgegen: den Pfad zum Output-Verzeichnis.
|
||||
@@ -487,9 +532,11 @@ def <modul>_dxf():
|
||||
|
||||
@pytest.fixture
|
||||
def <modul>_ref_dxf():
|
||||
path = os.path.join(_reference_dir(), "<modul>_ref.dxf")
|
||||
# Konvention: Referenz = GLEICHER Dateiname wie das Ist-Ergebnis in output/.
|
||||
path = os.path.join(_reference_dir(), "<modul>_tests.dxf")
|
||||
if not os.path.exists(path):
|
||||
pytest.skip("Referenz nicht vorhanden")
|
||||
pytest.skip("reference/<modul>_tests.dxf nicht vorhanden - Referenz noch "
|
||||
"nicht festgelegt (output/<modul>_tests.dxf nach reference/ kopieren)")
|
||||
return ezdxf.readfile(path)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user