Testien kirjoittaminen¶
MicroPythonin testit sijaitsevat polussa tests/. Seuraavassa on listaus keskeisistä hakemistoista ja run-tests.py-suoritusskriptistä:
.
├── basics
├── extmod
├── float
├── micropython
├── run-tests.py
...
Testien luokitteluun ylläpidetään alikansioita. Lisää testi luomalla uusi tiedosto johonkin olemassa olevista kansioista tai uuteen kansioon. On myös mahdollista tehdä mukautettuja testejä tämän tests-kansion ulkopuolelle, mitä suositeltaisiin mukautetulle portille.
Lisää esimerkiksi seuraava koodi tiedostoon print.py alihakemistossa tests/unix/:
def print_one():
print(1)
print_one()
Jos ajat testisi, tämän testin pitäisi näkyä testitulosteessa:
$ 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
Testit ajetaan vertaamalla testikohteen tulostetta CPythonin tulosteeseen. Joten jokaisen testin tulisi käyttää print-lauseita testitulosten ilmaisemiseen.
Testeille, joita ei voida verrata CPythoniin (eli micropython-kohtaiselle toiminnallisuudelle), voit tarjota .py.exp-tiedoston, jota käytetään vertailun totuutena.
Toinen tapa ajaa testejä, joka on hyödyllinen ajettaessa muilla kohteilla kuin Unix-portilla, on:
$ cd tests
$ ./run-tests.py
Sen jälkeen ajaaksesi kortilla:
$ ./run-tests.py -t /dev/ttyACM0
Ja ajaaksesi vain tietyn testijoukon (esim. hakemiston):
$ ./run-tests.py -d basics
$ ./run-tests.py float/builtin*.py
run-tests.py:n käyttäminen¶
run-tests.py-skripti tukee useita parametreja testien suorituksen mukauttamiseksi:
Kohteen ja laitteen valinta:
-t, --test-instance
-t-vaihtoehto hyväksyy testi-instanssille seuraavat:
unix - käytä MicroPythonin unix-porttia, joka määritellään MICROPY_MICROPYTHON-ympäristömuuttujalla (jonka oletuksena on joko unix- tai windows-portin vakiovariantti isäntäalustasta riippuen)
webassembly - käytä MicroPythonin webassembly-porttia, joka määritellään MICROPY_MICROPYTHON_MJS-ympäristömuuttujalla (jonka oletuksena on webassembly-portin vakiovariantti)
port:<device> - yhdistä annettuun sarjaporttilaitteeseen ja käytä sitä
a<n> - yhdistä laitteeseen /dev/ttyACM<n> ja käytä sitä
u<n> - yhdistä laitteeseen /dev/ttyUSB<n> ja käytä sitä
c<n> - yhdistä laitteeseen COM<n> ja käytä sitä
exec:<command> - suorita komento ja liity sen stdin/stdout-virtoihin
execpty:<command> - suorita komento ja liity tulostettuun /dev/pts/<n>-laitteeseen
<a>.<b>.<c>.<d> - yhdistä annettuun IPv4-osoitteeseen
mikä tahansa muu määrittää sarjaportin
Testien valinta:
-d, --test-dirs- Määritä yksi tai useampi ajettava testihakemisto-i, --include REGEX- Sisällytä säännölliseen lausekkeeseen täsmäävät testit-e, --exclude REGEX- Jätä pois säännölliseen lausekkeeseen täsmäävät testitfiles- Tietyt ajettavat testitiedostot
Suoritusvalinnat:
--emit <EMITTER>- MicroPython-emitteri, EMITTER voi olla bytecode tai native. Oletus: bytecode--via-mpy- Käännä .py-tiedostot ensin .mpy-muotoon--heapsize- Aseta keon koko testejä varten-j, --jobs N- Samanaikaisesti ajettavien testien määrä
Aseta MICROPY_MPYCROSS-ympäristömuuttuja käyttääksesi tiettyä mpy-cross-versiota, kun käytät --via-mpy-vaihtoehtoa.
Tulosten hallinta:
-r, --result-dir- Hakemisto testituloksille. Oletus: results/--print-failures- Näytä epäonnistuneiden testien erot ja lopeta--clean-failures- Poista .exp- ja .out-tiedostot aiemmista epäonnistuneista testeistä--run-failures- Aja uudelleen vain aiemmin epäonnistuneet testit
Esimerkkejä:
# 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