Pisanje testova¶
Testovi u MicroPythonu nalaze se na putanji tests/. Slijedi popis kljuÄnih direktorija i skripte za pokretanje run-tests.py:
.
├── basics
├── extmod
├── float
├── micropython
├── run-tests.py
...
OdrĹžavaju se podmape za kategorizaciju testova. Dodajte test stvaranjem nove datoteke u jednoj od postojeÄih mapa ili u novoj mapi. TakoÄer je moguÄe izraditi prilagoÄene testove izvan ove tests mape, ĹĄto bi se preporuÄilo za prilagoÄeni port.
Na primjer, dodajte sljedeÄi kod u datoteku print.py u poddirektoriju tests/unix/:
def print_one():
print(1)
print_one()
Ako pokrenete svoje testove, ovaj test trebao bi se pojaviti u izlazu testa:
$ 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
Testovi se pokreÄu usporedbom izlaza ciljne platforme testa s izlazom CPythona. Stoga bi svaki test trebao koristiti print naredbe za oznaÄavanje rezultata testa.
Za testove koji se ne mogu usporediti s CPythonom (tj. funkcionalnost specifiÄnu za micropython), moĹžete pruĹžiti .py.exp datoteku koja Äe se koristiti kao referentna istina za usporedbu.
Drugi naÄin pokretanja testova, koji je koristan pri izvoÄenju na ciljnim platformama razliÄitima od Unix porta, jest:
$ cd tests
$ ./run-tests.py
Zatim za pokretanje na ploÄi:
$ ./run-tests.py -t /dev/ttyACM0
I za pokretanje samo odreÄenog skupa testova (npr. direktorija):
$ ./run-tests.py -d basics
$ ./run-tests.py float/builtin*.py
KoriĹĄtenje run-tests.py¶
Skripta run-tests.py podrĹžava nekoliko parametara za prilagodbu izvoÄenja testova:
Odabir ciljne platforme i ureÄaja:
-t, --test-instance
Opcija -t prihvaÄa sljedeÄe za instancu testa:
unix - koristi unix port MicroPythona, odreÄen varijablom okoline MICROPY_MICROPYTHON (koja prema zadanim postavkama koristi standardnu varijantu unix ili windows porta, ovisno o host platformi)
webassembly - koristi webassembly port MicroPythona, odreÄen varijablom okoline MICROPY_MICROPYTHON_MJS (koja prema zadanim postavkama koristi standardnu varijantu webassembly porta)
port:<device> - povezuje se i koristi navedeni ureÄaj serijskog porta
a<n> - povezuje se i koristi /dev/ttyACM<n>
u<n> - povezuje se i koristi /dev/ttyUSB<n>
c<n> - povezuje se i koristi COM<n>
exec:<command> - izvrĹĄava naredbu i povezuje se na njezin stdin/stdout
execpty:<command> - izvrĹĄava naredbu i povezuje se na ispisani /dev/pts/<n> ureÄaj
<a>.<b>.<c>.<d> - povezuje se na navedenu IPv4 adresu
bilo ĹĄto drugo oznaÄava serijski port
Odabir testova:
-d, --test-dirs- Navedite jedan ili viĹĄe direktorija testova za pokretanje-i, --include REGEX- UkljuÄi testove koji odgovaraju regex uzorku-e, --exclude REGEX- IskljuÄi testove koji odgovaraju regex uzorkufiles- Specifiäne datoteke testova za pokretanje
Opcije izvoÄenja:
--emit <EMITTER>- MicroPython emitter, EMITTER moĹže biti bytecode ili native. Zadano: bytecode--via-mpy- Prvo prevedi .py datoteke u .mpy--heapsize- Postavi veliÄinu gomile (heap) za testove-j, --jobs N- Broj testova koji se izvode istovremeno
Postavite varijablu okoline MICROPY_MPYCROSS za koriĹĄtenje odreÄene verzije mpy-cross pri koriĹĄtenju --via-mpy.
Upravljanje rezultatima:
-r, --result-dir- Direktorij za rezultate testova. Zadano: results/--print-failures- PrikaĹži razliku (diff) neuspjelih testova i izaÄi--clean-failures- Izbriši .exp i .out datoteke iz prethodnih neuspjelih testova--run-failures- Ponovno pokreni samo prethodno neuspjele testove
Primjeri:
# 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