【公式ドキュメントを読もうシリーズ】GitHub Copilot を使ってテストを記述する
シリーズ概要
https://qiita.com/yasu_programming/items/cec66f9e8d5d571e9ce3
URL
説明
単体テスト
プロンプト
具体的なテストする手順が書かれている。非常に良さそう。
使用されているプロンプトがこちらです。
プロンプト: BankAccount() 関数に対する包括的な単体テスト スイートを Python で開発します。__ エッジ ケース、例外処理、データ検証など、さまざまなシナリオに対応する複数のテスト メソッドを記述します。
上記をプロンプトを行うことで、
- 様々なユースケースでのテストができる
- エッジケース(境界条件のテスト)への対応
- 例外処理
- 入力データが正しいかどうかの確認(-100円の入金はできないなど)
ができる。
スラッシュコマンド
tests
をCopilot Chatで使うことで、新しいテストケースを作成してくれる。
以下の引用で書かれているが、テストケースを作成していないファイルの隣のタブにほかのテストケースのファイルを開いておくことで、一貫性のあるテストが記述される可能性が高くなるのだそうです。
チーム開発などでも役に立ちそうで良いですね。
まだ単体テストの対象になっていないコード ファイルのテストを記述するように Copilot に求める場合は、エディターの隣接するタブで既存の 1 つ以上のテスト ファイルを開くことで、Copilot に有益なコンテキストを提供できます。 使用するテスト フレームワークを Copilot が確認できるため、既存のテストと一貫性のあるテストが記述される可能性が高くなります。
統合テスト
統合テストとしては、下記のプロンプトのような形式が良いようです。
"
BankAccount
クラスのdeposit
関数の統合テストを記述します。モックを使用してNotificationSystem
をシミュレートし、それが預金後に正しく呼び出されることを検証します"
このプロンプトを実行することで、
- 単体テストではなく、
deposit
関数とNotificationSystem
にフォーカスした統合テストであることを明示している。 - モックと呼ばれる仮のオブジェクトを生成してテストをしてくれると思われる。違ったらすみません。
- 正常に動くかの検証。
- 対象のメソッドが具体的に示されている。
全然別件だが、from unittest.mock import Mock
こんな形でモックを作ることができるんですね。ためになる。
"無効な預金額を使用するテスト ケースを追加して、関数が正しい例外を発生させ、
NotificationService
が呼び出されないことを確認します"
こういうプロンプトを入れて、例外処理の対応もすればなおよし。
所感
テストに関する知識があれば、相当役に立つと思っている。
開発時にはどんどん使っていきたいです。