組み込み開発のためのPython · レッスン 204 / 220
unittestでハードウェアなしの試験を作る
境界値・異常系を試験し、実機に接続する前にデータ処理を検証します。
プロトコルの変換や範囲検査の多くは、実機がなくても試験できます。期待する動作をコードで残せば、修正後の再確認や他の環境での再現が容易になります。
成功だけでなく境界と失敗も試す
通常値に加え、最小・最大・空・切り詰め・形式違いを試験します。異常入力に対して例外を出す設計なら、例外の種類も確認できます。試験名には条件と期待結果を書き、何が失敗したのかを出力から理解できるようにします。
機器アクセスとロジックを分離する
デコードや範囲検査の関数がシリアルポートを直接開かないようにすると、単体試験が速く安定します。実機が必要な試験は、別の統合試験として識別します。仮の入力データは仕様に沿って作成し、実機試験の代わりになると誤解しないようにします。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
import unittest
def decode_byte(raw: bytes) -> int:
if len(raw) != 1:
raise ValueError("1バイト必要です")
return raw[0]
class DecodeTests(unittest.TestCase):
def test_decodes_unsigned_byte(self):
self.assertEqual(decode_byte(b"\xff"), 255)
def test_rejects_empty_input(self):
with self.assertRaises(ValueError):
decode_byte(b"")手を動かす課題
正常な長さ、空入力、2バイト入力、最大値をテストし、`python -m unittest`で実行しましょう。