テストの作成
MicroPython のテストは tests/ ディレクトリにあります。以下は、主なディレクトリと run-tests.py 実行スクリプトのリストです
.
├── basics
├── extmod
├── float
├── micropython
├── run-tests.py
...
テストを分類するためのサブフォルダーがあります。テストを追加するには、既存のフォルダーのどれかか新しいフォルダーに新しいファイルを作成します。このテストフォルダーの外でカスタムテストを行うこともでき、カスタムポートにはこれを推奨します。
たとえば tests/unix/ サブディレクトリに print.py ファイルを作成し、次のコードを追加します。
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 ファイルを提供できます。
テストを実行するもう1つの方法は、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 - MICROPY_MICROPYTHON 環境変数で指定した MicroPython の unix ポートを使います(デフォルトではホストプラットフォームに応じて、unix ポート または Windows ポートの標準バージョンを使います)
webassembly - MICROPY_MICROPYTHON_MJS 環境変数で指定した MicroPython の webassembly ポートを使います(デフォルトでは標準バージョンの webassembly ポートを使います)
port:<デバイス> - 指定したシリアルポートデバイスに接続して使います
a<n> - /dev/ttyACM<n>に接続して使います
u<n> - /dev/ttyUSB<n> に接続して使います
c<n> - COM<n> に接続して使います
exec:<コマンド> - コマンドを実行し、その標準入力/標準出力に接続します
execpty:<コマンド> - コマンドを実行し、表示した /dev/pts/<n> デバイスに接続します
<a>.<b>.<c>.<d> - 指定した IPv4 アドレスに接続します
それ以外のものはシリアルポートを指定します
テストの選択
-d, --test-dirs- 実行するテストディレクトリを 1 つ以上指定する-i, --include REGEX- 正規表現パターンに一致するテストを含める-e, --exclude REGEX- 正規表現パターンに一致するテストを除外するfiles- 実行する特定のテストファイル
実行オプション
--emit <EMITTER>- MicroPythonエミッター。EMITTER には bytecode または native を指定できます。デフォルトは bytecode--via-mpy- 最初に .py ファイルを .mpy にコンパイル--heapsize- テスト用のヒープサイズを設定-j, --jobs N- 同時に実行するテストの数
--via-mpy 指定時に mpy-cross の特定のバージョンを使うには、MICROPY_MPYCROSS 環境変数を設定します。
結果の管理
-r, --result-dir- テスト結果の保存先ディレクトリ。デフォルト: results/--print-failures- 失敗したテストの差分を表示して終了--clean-failures- 以前に失敗したテストの .exp ファイルと .out ファイルを削除--run-failures- 以前に失敗したテストのみを再実行
実行例:
# ネイティブエミッターありで基本テストのみを実行
$ ./run-tests.py --emit native -d basics extmod
# async 機能を除いたテストを実行
$ ./run-tests.py -e async
# *_pep_* に一致するテストを実行
$ ./run-tests.py -i *_pep_*
# 指定したテストファイルを並行に実行
$ ./run-tests.py -j 4 basics/list*.py
# ESP32 ボードに接続してテスト
$ ./run-tests.py -t /dev/ttyUSB0
# or
$ ./run-tests.py -t u0
# 以前の実行で失敗したテストだけを再実行
$ ./run-tests.py --run-failures