Testroutinen auf kseinaus umbenannt und aktualisiert
test_ks.lsp in test_kseinaus.lsp umbenannt und alle Testroutinen (foerderer, kreisel, omniflo) sowie run_tests.bat und README entsprechend angepasst.
This commit is contained in:
+65
-24
@@ -10,13 +10,22 @@ Die Tests folgen einer **zweistufigen Architektur**:
|
||||
```
|
||||
BricsCAD Kommandozeile
|
||||
| |
|
||||
| TEST_KREISEL |
|
||||
| TEST_OMNIFLO_EXPORT |
|
||||
| SSG_RUN_ALL_TESTS |
|
||||
| (TEST_KREISEL, |
|
||||
| TEST_FOERDERER, |
|
||||
| TEST_KSEINAUS, |
|
||||
| TEST_OMNIFLO) |
|
||||
| | |
|
||||
v v |
|
||||
tests/output/ |
|
||||
kreisel_results.json |
|
||||
kreisel_tests.dxf |
|
||||
foerderer_results.json |
|
||||
foerderer_tests.dxf |
|
||||
kseinaus_results.json |
|
||||
kseinaus_tests.dxf |
|
||||
omniflo_results.json |
|
||||
omniflo_tests.dxf |
|
||||
omniflo_export.csv |
|
||||
|
|
||||
bin\run_tests.bat --runall
|
||||
@@ -44,17 +53,26 @@ tests/
|
||||
conftest.py # Gemeinsame pytest-Fixtures (Pfade, JSON/DXF-Laden)
|
||||
create_testbase.py # Erzeugt Basis-DXF (optional, wird nicht mehr benoetigt)
|
||||
requirements.txt # Python-Abhaengigkeiten (ezdxf, pytest)
|
||||
test_run_all.lsp # Fuehrt alle Tests aus: C:SSG_RUN_ALL_TESTS
|
||||
test_kreisel.lsp # LISP-Testrunner: C:TEST_KREISEL
|
||||
test_kreisel.py # pytest-Validierung der Kreisel-Ergebnisse
|
||||
test_omniflo.lsp # LISP-Testrunner: C:TEST_OMNIFLO_EXPORT
|
||||
test_foerderer.lsp # LISP-Testrunner: C:TEST_FOERDERER
|
||||
test_kseinaus.lsp # LISP-Testrunner: C:TEST_KSEINAUS
|
||||
test_omniflo.lsp # LISP-Testrunner: C:TEST_OMNIFLO
|
||||
test_omniflo.py # pytest-Validierung der Omniflo-Ergebnisse
|
||||
testdata/
|
||||
kreisel_tests.json # Testfall-Definitionen fuer Kreisel
|
||||
omniflo_tests.json # Testfall-Definitionen fuer Omniflo
|
||||
output/ # Ergebnisse aus BricsCAD (nicht in Git)
|
||||
kreisel_results.json
|
||||
kreisel_tests.dxf
|
||||
omniflo_export.csv
|
||||
kreisel_results.json # JSON-Ergebnisse pro Testmodul
|
||||
kreisel_tests.dxf # DXF-Zeichnung pro Testmodul
|
||||
foerderer_results.json
|
||||
foerderer_tests.dxf
|
||||
kseinaus_results.json
|
||||
kseinaus_tests.dxf
|
||||
omniflo_results.json
|
||||
omniflo_tests.dxf
|
||||
omniflo_export.csv # CSV-Export (Omniflo-spezifisch)
|
||||
reference/ # Abgenommene Referenzdaten (in Git)
|
||||
kreisel_ref.dxf
|
||||
...
|
||||
@@ -70,22 +88,30 @@ BricsCAD starten (ueber `bin\start_briscad.bat`) und Module laden:
|
||||
(load (strcat (getenv "DXFMAKRO") "/Lisp/ssg_load.lsp"))
|
||||
```
|
||||
|
||||
Dann den gewuenschten Testrunner laden und ausfuehren:
|
||||
Dann alle Tests auf einmal ausfuehren:
|
||||
|
||||
```lisp
|
||||
;; Kreisel-Test
|
||||
(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp"))
|
||||
TEST_KREISEL
|
||||
|
||||
;; Omniflo-Test
|
||||
(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp"))
|
||||
TEST_OMNIFLO_EXPORT
|
||||
;; Alle Tests ausfuehren (empfohlen)
|
||||
(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp"))
|
||||
SSG_RUN_ALL_TESTS
|
||||
```
|
||||
|
||||
Die Testrunner:
|
||||
- Lesen Testfaelle aus `testdata/*.json`
|
||||
- Fuegen Bloecke per Script-Funktionen ein (ohne User-Interaktion)
|
||||
- Speichern Ergebnisse nach `output/`
|
||||
Oder einen einzelnen Test:
|
||||
|
||||
```lisp
|
||||
;; Einzeltest (z.B. Kreisel)
|
||||
(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp"))
|
||||
TEST_KREISEL
|
||||
;; Ergebnisse manuell exportieren:
|
||||
(kreisel:export-results (strcat (getenv "DXFMAKRO") "/tests/output"))
|
||||
```
|
||||
|
||||
`SSG_RUN_ALL_TESTS` fuehrt fuer jedes Modul in `*test-module*` folgendes aus:
|
||||
- Zeichnung leeren (ERASE + PURGE)
|
||||
- Testdatei laden und Befehl ausfuehren
|
||||
- JSON-Export aufrufen (`<name>:export-results`)
|
||||
- DXF speichern (`<name>_tests.dxf`)
|
||||
- Bei Fehler: weiter mit naechstem Test (vl-catch-all-apply)
|
||||
|
||||
### 2. Python-Validierung ausfuehren
|
||||
|
||||
@@ -167,6 +193,19 @@ Fuer ein neues Modul eine neue `.lsp`-Datei erstellen nach dem Muster:
|
||||
|
||||
```lisp
|
||||
;; test_<modul>.lsp
|
||||
;; Konvention: Basisname <modul> bestimmt Befehl, DXF und Export-Funktion
|
||||
|
||||
;; Export-Funktion (wird von test_run_all.lsp aufgerufen)
|
||||
(defun <modul>:export-results (tests-out-dir / out-json f first)
|
||||
(if (null *<modul>-test-results*)
|
||||
(princ "\n Keine <modul>-Ergebnisse vorhanden.")
|
||||
(progn
|
||||
(vl-mkdir tests-out-dir)
|
||||
(setq out-json (strcat tests-out-dir "/<modul>_results.json"))
|
||||
;; ... JSON-Array schreiben ...
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun c:TEST_<MODUL> (/ ...)
|
||||
(ssg-start "TEST_<MODUL>" '(("OSMODE") ("ATTREQ") ("ATTDIA")))
|
||||
@@ -183,17 +222,19 @@ Fuer ein neues Modul eine neue `.lsp`-Datei erstellen nach dem Muster:
|
||||
;; ... Script-Funktion aufrufen, Ergebnis pruefen ...
|
||||
)
|
||||
|
||||
;; 3. Ergebnisse als JSON speichern
|
||||
(setq out-json (strcat (getenv "DXFMAKRO") "/tests/output/<modul>_results.json"))
|
||||
;; ... JSON schreiben ...
|
||||
|
||||
;; 4. DXF speichern
|
||||
(command "_.SAVEAS" "DXF" out-dxf)
|
||||
;; 3. Ergebnisse in globaler Variable speichern
|
||||
(setq *<modul>-test-results* (reverse results-list))
|
||||
|
||||
(ssg-end)
|
||||
)
|
||||
```
|
||||
|
||||
Dann den Basisnamen in `*test-module*` (in `test_run_all.lsp`) eintragen:
|
||||
|
||||
```lisp
|
||||
(setq *test-module* '("kreisel" "foerderer" "kseinaus" "omniflo" "<modul>"))
|
||||
```
|
||||
|
||||
Wichtig:
|
||||
- `omni:load-json` erwartet ein **flaches JSON-Array** mit flachen Objekten (kein Nesting)
|
||||
- `omni:val` liest Werte aus den geladenen Eintraegen
|
||||
|
||||
Reference in New Issue
Block a user