编写测试

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-specific 功能),你可以提供一个 .py.exp 文件,这个文件将会用于比较。

当运行在其他适配端上时,这种运行测试的方式很有用:

$ cd tests
$ ./run-tests.py

然后在一个开发板上运行:

$ ./run-tests.py --target minimal --device /dev/ttyACM0

然后运行指定的测试集(某一个测试子目录):

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