כתיבת בדיקות

הבדיקות ב-MicroPython ממוקמות בנתיב tests/. להלן רשימה של תיקיות מפתח וסקריפט ההרצה run-tests.py:

.
 ├── basics
 ├── extmod
 ├── float
 ├── micropython
 ├── run-tests.py
 ...

ישנן תת-תיקיות המתוחזקות לצורך קטלוג הבדיקות. ניתן להוסיף בדיקה על ידי יצירת קובץ חדש באחת מהתיקיות הקיימות או בתיקייה חדשה. ניתן גם ליצור בדיקות מותאמות אישית מחוץ לתיקיית בדיקות זו, מה שמומלץ עבור פורט מותאם אישית.

לדוגמה, הוסף את הקוד הבא בקובץ print.py בתת-תיקייה tests/unix/:

def print_one():
    print(1)

print_one()

אם תריץ את הבדיקות שלך, בדיקה זו אמורה להופיע בפלט הבדיקה:

$ 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

בדיקות מורצות על ידי השוואת הפלט מיעד הבדיקה אל הפלט מ-CPython. לכן כל בדיקה צריכה להשתמש בפקודות print כדי לציין את תוצאות הבדיקה.

עבור בדיקות שלא ניתן להשוות ל-CPython (כלומר פונקציונליות ספציפית ל-micropython), ניתן לספק קובץ .py.exp שישמש כאמת לצורך ההשוואה.

הדרך האחרת להרצת בדיקות, שימושית בעת הרצה על יעדים שאינם פורט ה-Unix, היא:

$ cd tests
$ ./run-tests.py

לאחר מכן, להרצה על לוח:

$ ./run-tests.py -t /dev/ttyACM0

וכדי להריץ רק קבוצה מסוימת של בדיקות (למשל תיקייה):

$ ./run-tests.py -d basics
$ ./run-tests.py float/builtin*.py

שימוש ב-run-tests.py

הסקריפט run-tests.py תומך במספר פרמטרים להתאמה אישית של הרצת הבדיקות:

בחירת יעד והתקן:

  • -t, --test-instance

האפשרות -t מקבלת את הערכים הבאים עבור מופע הבדיקה:

  • unix - השתמש בפורט ה-unix של MicroPython, המצוין על ידי משתנה הסביבה MICROPY_MICROPYTHON (שברירת המחדל שלו היא הווריאנט הסטנדרטי של פורט ה-unix או ה-windows, בהתאם לפלטפורמת המארח)

  • webassembly - השתמש בפורט ה-webassembly של MicroPython, המצוין על ידי משתנה הסביבה MICROPY_MICROPYTHON_MJS (שברירת המחדל שלו היא הווריאנט הסטנדרטי של פורט ה-webassembly)

  • port:<device> - התחבר והשתמש בהתקן הפורט הטורי הנתון

  • a<n> - התחבר והשתמש ב-/dev/ttyACM<n>

  • u<n> - התחבר והשתמש ב-/dev/ttyUSB<n>

  • c<n> - התחבר והשתמש ב-COM<n>

  • exec:<command> - הרץ פקודה והתחבר ל-stdin/stdout שלה

  • execpty:<command> - הרץ פקודה והתחבר להתקן /dev/pts/<n> המודפס

  • <a>.<b>.<c>.<d> - התחבר לכתובת ה-IPv4 הנתונה

  • כל דבר אחר מציין פורט טורי

בחירת בדיקות:

  • -d, --test-dirs - ציין תיקיית בדיקות אחת או יותר להרצה

  • -i, --include REGEX - כלול בדיקות התואמות לתבנית regex

  • -e, --exclude REGEX - החרג בדיקות התואמות לתבנית regex

  • files - קובצי בדיקה ספציפיים להרצה

אפשרויות הרצה:

  • --emit <EMITTER> - הפולט (emitter) של MicroPython, EMITTER יכול להיות bytecode או native. ברירת מחדל: bytecode

  • --via-mpy - הדר תחילה קובצי .py ל-.mpy

  • --heapsize - הגדר את גודל ה-heap עבור הבדיקות

  • -j, --jobs N - מספר הבדיקות להרצה בו-זמנית

הגדר את משתנה הסביבה MICROPY_MPYCROSS כדי להשתמש בגרסה ספציפית של mpy-cross בעת השימוש ב---via-mpy.

ניהול תוצאות:

  • -r, --result-dir - תיקייה לתוצאות הבדיקות. ברירת מחדל: results/

  • --print-failures - הצג diff של בדיקות שנכשלו וצא

  • --clean-failures - מחק קובצי .exp ו-.out מבדיקות קודמות שנכשלו

  • --run-failures - הרץ מחדש רק בדיקות שנכשלו בעבר

דוגמאות:

# 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