pytest: AssertionError
pytestでアサーションが失敗した場合のエラー
概要
pytestでテストのアサーションが失敗した場合に発生するエラーです。期待値と実際の値が一致しない場合に表示されます。
エラーメッセージ
FAILED tests/test_calculator.py::test_add - AssertionError: assert 4 == 5
E assert 4 == 5
E + where 4 = add(2, 2)
原因
- ロジックの誤り: 実装が仕様と異なる
- テストの誤り: テストケースの期待値が間違っている
- データの問題: テストデータが不正
- 環境の違い: 環境依存のコード
解決策
1. 詳細なアサーション
| |
2. pytest.raises で例外テスト
| |
3. フィクスチャの使用
| |
4. パラメトライズ
| |
5. モックの使用
| |
6. 近似値の比較
| |
7. 非同期テスト
| |
8. テストのスキップ
| |
9. conftest.py でフィクスチャ共有
| |
10. デバッグ
| |
よくある間違い
- assert と == の間にカンマを入れる(タプルになる)
- フィクスチャのスコープを考慮していない
- 非同期テストに
@pytest.mark.asyncioを付け忘れる - モックのパスが間違っている(インポート元ではなく使用場所でパッチ)
この記事は役に立ちましたか?