このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

テストの作成

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