実際の誤りを検出するユニットテストの作り方。
ユニットテストは期待する動作と意味のある境界を表すものにします。実装の計算式をテストで繰り返すだけにしないでください。
作業手順をタスクに合わせましょう。
関数の契約から期待する動作を定義し、意味のある通常、境界、失敗のケースを選びます。既知の結果や独立したフィクスチャを使い、実装の計算を繰り返すだけのアサーションは避けてください。
- 用意するもの
- 関数の実装とテストフレームワーク。
- 得られるもの
- 動作と境界ケースをカバーする意味のあるテスト。
入力と結果を確認しましょう。
説明用の入力と出力 · 実際の WebAct 実行ではない学習用サンプル
入力項目サンプル個
Write pytest tests for calculator.add(a, b). It returns the sum of two integers. Required cases: positive values, zero, negative values.
完成例
# test_calculator.py
import pytest
from calculator import add
@pytest.mark.parametrize("a,b,expected", [(2, 3, 5), (0, 0, 0), (-2, 3, 1)])
def test_add(a, b, expected):
assert add(a, b) == expected
Run in the project with pytest installed: python -m pytest test_calculator.pyこの入力をプロンプトに読み込み、WebAct にコピーして試してください。結果は掲載例と異なる場合があります。
判断のポイントとトラブル対処。
生成するユニットテストは関数の式を複製すべきですか?
可能なら独立して分かっている期待値を使います。同じ誤りをテストにも入れると、誤った実装が検証済みに見えることがあります。
すべてのテストが通っても実際の失敗が残るのはなぜですか?
失敗条件と実際の契約をテストしているか確認してください。テスト数の多さだけでは、必要な範囲の網羅を示せません。
このワークフローの参考資料。
自分の資料で試しましょう。
タスクのプロンプト内の例を自分の資料に置き換えてください。必要な要件を残し、タスクを WebAct にコピーします。
タスクを調整してコピー ↑