0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【公ド読】GitHub Copilot を使ってテストを記述する

Posted at

【公式ドキュメントを読もうシリーズ】GitHub Copilot を使ってテストを記述する

シリーズ概要

https://qiita.com/yasu_programming/items/cec66f9e8d5d571e9ce3

URL

https://docs.github.com/ja/copilot/using-github-copilot/guides-on-using-github-copilot/writing-tests-with-github-copilot

説明

単体テスト

プロンプト

具体的なテストする手順が書かれている。非常に良さそう。
使用されているプロンプトがこちらです。

プロンプト: BankAccount() 関数に対する包括的な単体テスト スイートを Python で開発します。__ エッジ ケース、例外処理、データ検証など、さまざまなシナリオに対応する複数のテスト メソッドを記述します。

上記をプロンプトを行うことで、

  • 様々なユースケースでのテストができる
  • エッジケース(境界条件のテスト)への対応
  • 例外処理
  • 入力データが正しいかどうかの確認(-100円の入金はできないなど)

ができる。

スラッシュコマンド

testsをCopilot Chatで使うことで、新しいテストケースを作成してくれる。

以下の引用で書かれているが、テストケースを作成していないファイルの隣のタブにほかのテストケースのファイルを開いておくことで、一貫性のあるテストが記述される可能性が高くなるのだそうです。
チーム開発などでも役に立ちそうで良いですね。

まだ単体テストの対象になっていないコード ファイルのテストを記述するように Copilot に求める場合は、エディターの隣接するタブで既存の 1 つ以上のテスト ファイルを開くことで、Copilot に有益なコンテキストを提供できます。 使用するテスト フレームワークを Copilot が確認できるため、既存のテストと一貫性のあるテストが記述される可能性が高くなります。

統合テスト

統合テストとしては、下記のプロンプトのような形式が良いようです。

"BankAccount クラスの deposit 関数の統合テストを記述します。モックを使用して NotificationSystem をシミュレートし、それが預金後に正しく呼び出されることを検証します"

このプロンプトを実行することで、

  • 単体テストではなく、deposit 関数とNotificationSystemにフォーカスした統合テストであることを明示している。
  • モックと呼ばれる仮のオブジェクトを生成してテストをしてくれると思われる。違ったらすみません。
  • 正常に動くかの検証。
  • 対象のメソッドが具体的に示されている。

全然別件だが、from unittest.mock import Mockこんな形でモックを作ることができるんですね。ためになる。

"無効な預金額を使用するテスト ケースを追加して、関数が正しい例外を発生させ、NotificationService が呼び出されないことを確認します"

こういうプロンプトを入れて、例外処理の対応もすればなおよし。

所感

テストに関する知識があれば、相当役に立つと思っている。
開発時にはどんどん使っていきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?