GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろう
生徒
「pytestやPHPUnitを学びたいのですが、Geminiには何を見てもらえばいいですか?」
先生
「Pythonテストでは、正常系と異常系を分けて確認すると理解しやすくなります。コードだけでなく、入力、処理、出力、失敗時の動きまで見ましょう。」
生徒
「Geminiに完成コードだけ作ってもらうより、確認観点も出してもらう方がよさそうですね。」
先生
「その通りです。この記事では、pytestやPHPUnitを実際に使う前提で、必要な考え方、具体例、失敗しやすい点を順番に整理します。」
1. pytestやPHPUnitで最初に確認すること
pytestやPHPUnitでは、最初に「何を入力し、どの処理を通し、どんな結果を確認するか」を決めます。Pythonテストは範囲が広いため、いきなり完成形を求めるより、確認する観点を小さく分けた方が理解しやすくなります。
Geminiを使う時は、目的、前提、使っている環境、期待する結果を一緒に伝えます。特に正常系、異常系、境界値は、回答の質を左右する大事な情報です。
また、Geminiの回答を読む時は「説明」「コード」「確認方法」を分けて見ます。説明だけで納得せず、コードだけを写さず、最後に自分の環境で同じ結果になるかを確認するのが大切です。
| キーワード | 確認する内容 |
|---|---|
| 正常系 | 期待通りに動く代表例を確認する |
| 異常系 | 空文字、不正値、例外を確認する |
| 境界値 | 0件、1件、上限値など端の値を見る |
| 自動実行 | pytestやPHPUnitで繰り返し確認する |
2. 正常系を小さなコードで確認する
pytestやPHPUnitを理解するには、まず小さい単位に分けるのが近道です。大きなアプリ全体を一度に扱うと、どこで失敗しているのか見えにくくなります。
次の例では、正常系に関係する最小限の確認項目だけを取り出しています。Geminiに相談する時も、このくらいの大きさに切り出すと、原因や改善点を具体的に返してもらいやすくなります。
def add_tax(price: int) -> int:
return int(price * 1.1)
def validate_name(name: str) -> bool:
return 1 <= len(name) <= 30
コードを実行したら、入力値、出力結果、エラーの有無を確認します。動いた場合でも、なぜその結果になるのかを1行ずつ説明してもらうと理解が残りやすくなります。
もし途中でわからない行が出てきたら、コード全体を聞き直すより、その行だけを抜き出して質問します。変数に何が入るのか、関数が何を返すのか、失敗時にどの例外が出るのかを確認すると、次の修正につなげやすくなります。
3. 異常系を実践例で深掘りする
基本の形が見えたら、次は実際の利用場面に近い形で確認します。pytestやPHPUnitでは、処理を動かすだけでなく、失敗した時の戻し方や確認する画面も決めておくと安心です。
def test_add_tax():
assert add_tax(1000) == 1100
def test_validate_name():
assert validate_name("Alice") is True
assert validate_name("") is False
実践例では、正常に動く入力だけでなく、空の値、不正な値、想定外の値も入れて確認します。この確認を入れると、Geminiの回答を丸写しするより実務に近い理解になります。
ここで大事なのは、完成コードの見た目よりも「どの入力で、どの処理が通り、どの結果になるか」を説明できることです。Geminiには、処理の流れを番号付きで分解してもらうと、あとから自分で修正する時にも迷いにくくなります。
4. pytestやPHPUnitで初心者が失敗しやすいポイント
pytestやPHPUnitでは、コードが動くかどうかだけを見ると失敗に気づきにくくなります。よくある失敗を先に知っておくと、Geminiの回答を確認する時の目印になります。
| 失敗例 | 起きる問題 | 見直すポイント |
|---|---|---|
| 正常系だけ見る | 空文字や不正値で壊れる | 異常系と境界値を入れる |
| 期待結果を書かない | 何が正しいのか判断できない | 入力と戻り値を表にする |
| 外部依存をそのまま使う | テストが不安定になる | DBやAPIを分離して考える |
| 修正後に再実行しない | 別の場所が壊れていても気づけない | 同じコマンドで繰り返し確認する |
表の内容は、Geminiにレビューしてもらう時の観点としても使えます。「この失敗例に当てはまる部分がないか確認して」と伝えると、単なる説明ではなく、今のコードに合わせた指摘を受けやすくなります。
5. GeminiにpytestやPHPUnitを確認してもらうプロンプト
Geminiへ相談する時は、作りたいもの、現在のコード、困っていること、期待する結果をまとめて渡します。質問を具体的にすると、回答も具体的になります。
pytestやPHPUnitのテスト観点を作ってください。
条件:
- 正常系、異常系、境界値を分ける
- pytestまたはPHPUnitで小さなテスト例を書く
- 期待結果を表にする
- テストしにくい部分があれば改善案も出す
回答を受け取ったら、提案されたコードをそのまま採用せず、自分の環境で一つずつ実行します。理解できない行があれば、その行だけを抜き出して追加で質問すると確認しやすくなります。
さらに、Geminiの回答に含まれる前提が自分の環境と合っているかも見ます。PythonやPHPのバージョン、使っているライブラリ、ローカル環境とサーバー環境の違いによって、同じコードでも動き方が変わることがあります。
6. pytestやPHPUnitの動作確認チェックリスト
学習した内容を実際に使う前に、確認項目を表にしておくと抜け漏れを減らせます。特に、入力と出力、失敗時の動き、保存されるデータは分けて確認しましょう。
| 確認項目 | 見るポイント |
|---|---|
| 正常系 | 代表的な成功パターンがあるか |
| 異常系 | 空、不正、権限なしを確認したか |
| 境界値 | 0件、1件、最大値を見たか |
| 再実行 | 同じコマンドで何度も確認できるか |
チェックリストは、記事を読んだ直後だけでなく、実際に自分のコードへ取り入れる時にも使えます。すべてを一度に満たそうとせず、まず一つ動かし、次に失敗パターンを足し、最後に安全性や保守性を見直す流れが現実的です。
7. pytestやPHPUnitを実務に近づける改善ポイント
Pythonテストは、サンプルを読んだだけでは身につきにくい分野です。まず小さく動かし、次に条件を一つ追加し、最後に確認項目を増やす流れにすると、理解が安定します。
正常系だけでなく異常系と境界値を追加し、変更後も同じテストを回します。 Geminiには、完成コードだけでなく「変更した理由」「失敗した時の確認」「ほかの書き方との違い」まで聞くと、次の実装で応用しやすくなります。
次にGeminiへ聞く例:
pytestやPHPUnitを、実務で使う前提に近づけたいです。
今のコードをもとに、入力チェック、エラー処理、確認手順を追加してください。
変更した部分と理由を先に説明してから、完成コードを出してください。
最後に、このテーマではタイトルに含まれるキーワードを実際のコードやチェックリストに落とし込むことが大切です。Geminiを学習相手として使いながら、手を動かして確認するところまで進めましょう。
慣れてきたら、同じテーマで別のデータ、別の画面、別のエラー条件を試します。そこで出た違いをGeminiに説明させると、暗記ではなく「なぜそう書くのか」という理解に変わっていきます。
8. GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろうの入力データとコード例
GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろうでは、Geminiに説明だけを求めるより、入力データ、処理、出力結果を表のように分けて相談すると理解しやすくなります。ここでは「pytestで税込計算とExcel出力前の値を確認する」を題材にして、実際に動かせるコード例まで確認します。
Geminiは表形式の整理やGoogle Colabでの実行確認、CSVやJSONの読み取り、Pythonによる計算確認と相性がよいです。Pythonテスト作成では、pytestで正常系、異常系、境界値を確認することを意識します。
Geminiに次のコード例を相談します。
テーマ: GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろう
目的: pytestで正常系、異常系、境界値を確認する
条件:
- 表形式で入力、処理、出力を整理してください
- 小さく動くコードを出してください
- 実行結果または確認方法を出してください
- CSV、JSON、Excel、Colabなど記事タイトルに関係する要素を優先してください
- 正常系、異常系、境界値を分けて確認する
この質問文では、記事タイトルに関係するデータ形式や確認方法を先に指定しています。Geminiの回答が一般論になりすぎる時は、「このデータで実行した結果まで出して」と追加で聞くと、記事として実用的になります。
def add_tax(price, rate=0.1):
if price < 0:
raise ValueError("priceは0以上で指定してください")
return int(price * (1 + rate))
print(add_tax(1000))
コードを読む時は、読み込むデータ、加工する処理、表示または保存する結果を分けて見ます。CSV、JSON、Excel、Colab、APIのどれを扱う記事なのかを意識すると、同じGemini記事でも内容の違いがはっきりします。
Geminiに追加で聞くなら、「入力データの例を表にしてください」「このコードで失敗しやすい列名を教えてください」「Colabで実行する場合の注意点も出してください」のように、確認したい形を具体的にします。これにより、単なるコード生成ではなく、読者が手元で再現しやすい手順になります。
9. GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろうの実行結果と確認ポイント
Geminiが出したコードは、実行結果まで確認して初めて使える内容になります。特に表データやファイル出力では、列名、文字コード、件数、合計値を確認しないと、見た目だけでは正しいか判断できません。
1100
実行結果を見たら、次に確認用コードを使って、期待した列や値が入っているかをチェックします。Geminiには「この結果を検証する短いコードも出して」と頼むと、確認漏れを減らせます。
import pytest
def test_add_tax_normal():
assert add_tax(1000) == 1100
def test_add_tax_zero():
assert add_tax(0) == 0
def test_add_tax_negative():
with pytest.raises(ValueError):
add_tax(-1)
テスト作成では、正常系、異常系、境界値を分けて確認することが大切です。エラーが出た場合は、入力データ、実行環境、表示されたエラー、期待していた結果をまとめてGeminiに渡すと、原因を絞りやすくなります。
また、Google Colabで試す場合は、セルの実行順やファイルのアップロード場所も確認します。ローカル環境で動くコードでも、Colabではパスやインストール済みライブラリが違うことがあるため、実行環境を質問文に入れると安定します。
確認のコツは、画面に出た結果だけを見るのではなく、件数、合計値、列名、エラー時の表示を数字で確かめることです。Geminiに「確認項目を表にして」と頼むと、どこを見ればよいかが整理され、記事のコード例をそのまま練習に使いやすくなります。
10. GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろうを改善する実務向けコード
最後に、最初のコードを実務向けに少し改善します。Geminiに改善を頼む時は、ただ短くするのではなく、入力チェック、例外処理、ファイル名、文字コード、テストしやすさを指定すると、読者が使いやすいコードになります。
def add_tax(price, rate=0.1):
if not isinstance(price, int):
raise TypeError("priceは整数で指定してください")
if price < 0:
raise ValueError("priceは0以上で指定してください")
return int(round(price * (1 + rate)))
改善後のコードでは、処理を関数に分けたり、失敗する入力を検出したり、別のデータでも再利用できる形にしています。Geminiに「このコードを初心者向けに説明して」「実務で注意する点を表にして」と聞くと、学習と実装の両方に使いやすくなります。
採用前には、別の入力で試すことも大切です。空のCSV、列名が違うExcel、JSONのキー不足、DBの接続失敗、不正なフォーム入力などを試すと、Geminiのコード例をそのまま使ってよいか判断しやすくなります。
さらに、改善コードを保存する前に、元のコードとの違いをGeminiに比較してもらうと安全です。変更した目的、増えたチェック、変わった出力、追加で必要なテストを分けて確認すれば、読みやすさと実用性の両方を高められます。
GeminiでpytestやPHPUnitを学ぶ方法!最初のテストコードを作ろうを学ぶ時は、Geminiへの質問、コード例、実行結果、確認コード、改善コードをセットにすると、読んだ人が自分の環境で再現しやすい記事になります。