Tesztek írása¶
A MicroPython tesztjei a tests/ útvonalon találhatók. Az alábbi a kulcsfontosságú könyvtárak és a run-tests.py futtatószkript felsorolása:
.
├── basics
├── extmod
├── float
├── micropython
├── run-tests.py
...
Vannak almappák, amelyeket a tesztek kategorizálására tartanak fenn. Tesztet úgy adhat hozzá, hogy létrehoz egy új fájlt valamelyik meglévő mappában vagy egy új mappában. Lehetséges egyéni teszteket is készíteni ezen a tests mappán kívül, ami egyéni port esetén ajánlott.
Például adja hozzá a következő kódot egy print.py nevű fájlban a tests/unix/ alkönyvtárban:
def print_one():
print(1)
print_one()
Ha lefuttatja a tesztjeit, ennek a tesztnek meg kell jelennie a teszt kimenetében:
$ cd ports/unix
$ make tests
skip unix/extra_coverage.py
pass unix/ffi_callback.py
pass unix/ffi_float.py
pass unix/ffi_float2.py
pass unix/print.py
pass unix/time.py
pass unix/time2.py
A teszteket úgy futtatjuk, hogy összehasonlítjuk a teszt-célpont kimenetét a CPython kimenetével. Ezért minden tesztnek print utasításokat kell használnia a teszteredmények jelzésére.
Azon tesztekhez, amelyek nem hasonlíthatók össze a CPythonnal (azaz micropython-specifikus funkcionalitáshoz), megadhat egy .py.exp fájlt, amelyet az összehasonlítás alapigazságaként használunk.
A tesztek futtatásának másik módja, amely akkor hasznos, ha a Unix porttól eltérő célpontokon futtat, a következő:
$ cd tests
$ ./run-tests.py
Ezután egy panelen való futtatáshoz:
$ ./run-tests.py -t /dev/ttyACM0
És csak egy bizonyos teszthalmaz futtatásához (pl. egy könyvtár):
$ ./run-tests.py -d basics
$ ./run-tests.py float/builtin*.py
A run-tests.py használata¶
A run-tests.py szkript több paramétert is támogat a tesztvégrehajtás testreszabásához:
Célpont- és eszközválasztás:
-t, --test-instance
A -t opció a következőket fogadja el a teszt-példányhoz:
unix - a MicroPython unix portját használja, amelyet a MICROPY_MICROPYTHON környezeti változó határoz meg (amelynek alapértelmezett értéke a unix vagy a windows port standard változata, a host platformtól függően)
webassembly - a MicroPython webassembly portját használja, amelyet a MICROPY_MICROPYTHON_MJS környezeti változó határoz meg (amelynek alapértelmezett értéke a webassembly port standard változata)
port:<device> - csatlakozás a megadott soros port eszközhöz és annak használata
a<n> - csatlakozás a /dev/ttyACM<n>-hez és annak használata
u<n> - csatlakozás a /dev/ttyUSB<n>-hez és annak használata
c<n> - csatlakozás a COM<n>-hez és annak használata
exec:<command> - egy parancs végrehajtása és csatlakozás annak stdin/stdout csatornáihoz
execpty:<command> - egy parancs végrehajtása és csatlakozás a kiírt /dev/pts/<n> eszközhöz
<a>.<b>.<c>.<d> - csatlakozás a megadott IPv4 címhez
bármi más egy soros portot ad meg
Tesztválasztás:
-d, --test-dirs- Egy vagy több futtatandó tesztkönyvtár megadása-i, --include REGEX- A regex mintára illeszkedő tesztek bevonása-e, --exclude REGEX- A regex mintára illeszkedő tesztek kizárásafiles- Konkrét futtatandó tesztfájlok
Végrehajtási beállítások:
--emit <EMITTER>- MicroPython kibocsátó (emitter), az EMITTER lehet bytecode vagy native. Alapértelmezett: bytecode--via-mpy- A .py fájlok előzetes lefordítása .mpy fájlokká--heapsize- A heap méretének beállítása a tesztekhez-j, --jobs N- Az egyidejűleg futtatandó tesztek száma
Állítsa be a MICROPY_MPYCROSS környezeti változót az mpy-cross egy adott verziójának használatához a --via-mpy használatakor.
Eredménykezelés:
-r, --result-dir- A teszteredmények könyvtára. Alapértelmezett: results/--print-failures- A sikertelen tesztek diff-jének megjelenítése és kilépés--clean-failures- A korábbi sikertelen tesztek .exp és .out fájljainak törlése--run-failures- Csak a korábban sikertelen tesztek újrafuttatása
Példák:
# Run only basic tests with native emitter
$ ./run-tests.py --emit native -d basics extmod
# Run tests excluding async functionality
$ ./run-tests.py -e async
# Run tests matching *_pep_*
$ ./run-tests.py -i *_pep_*
# Run specific test files in parallel
$ ./run-tests.py -j 4 basics/list*.py
# Test on a connected OpenMV Cam
$ ./run-tests.py -t /dev/ttyACM0
# or
$ ./run-tests.py -t a0
# Re-run only failed tests from previous run
$ ./run-tests.py --run-failures