테스트 작성¶
MicroPython의 테스트는 tests/ 경로에 위치합니다. 다음은 주요 디렉터리와 run-tests.py 러너 스크립트의 목록입니다:
.
├── basics
├── extmod
├── float
├── micropython
├── run-tests.py
...
테스트를 분류하기 위해 하위 폴더가 유지됩니다. 기존 폴더 중 하나 또는 새 폴더에 새 파일을 만들어 테스트를 추가하세요. 이 tests 폴더 외부에 사용자 정의 테스트를 만드는 것도 가능하며, 이는 사용자 정의 포트에 권장됩니다.
예를 들어, 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 파일을 제공할 수 있습니다.
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:<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- 정규식 패턴과 일치하는 테스트를 포함합니다-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- 실패한 테스트의 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