- Pytest は
test_*という名前の関数を見つけて、それらをプレーンなassertステートメントでチェックします。 - フィクスチャは、引数として名前を付けるだけで再利用可能なセットアップとクリーンアップを提供します。
@pytest.mark.parametrizeは、多くの入力を使用して 1 つのテストを実行します。- 共有フィクスチャを
conftest.pyに配置すると、インポートする必要はありません。
テストが面倒だと感じてテストの作成を避けてきた場合は、この pytest チュートリアル を読んで考えを変える必要があります。 Pytest は儀式の大部分を削除します。継承するクラスや覚えておくべき特別なアサーション メソッドはありません。テストはわずか 2 行で済みます。
小さなショッピング カートを作成し、段階的にテストします。すべてを Python 3.13 と pytest 9.2 で実行しました。表示されている出力は実際のものですが、お使いのマシンでは異なるファイル パスとタイミングの詳細はトリミングされています。
なぜpytestなのか?
Python には unittest が同梱されており、これでうまく機能しますが、通常は pytest の方が便利です。それぞれの同じチェックを次に示します。
| タスク | 単体テスト | pytest |
|---|---|---|
| 平等性をチェックする | self.assertEqual(a, b) |
a == b をアサートします |
| 例外を確認する | self.assertRaises(...) |
pytest.raises(...) |
| テスト構造 | TestCase から継承したクラス |
プレーンな機能 |
| セットアップとクリーンアップ | setUpとtearDownの方法 |
再利用可能な治具 |
| 多くの入力 | subTestループ |
パラメータ化する |
Pytest は既存の unittest テストも実行できるため、段階的に切り替えることができます。また、カバレッジ用の pytest-cov や並列実行用の pytest-xdist など、大規模なプラグイン エコシステムもあります。
pytestをインストールする
Python 仮想環境チュートリアル で説明されているように、まず仮想環境を作成してからインストールします。
pip install pytest
pytest --version
# pytest 9.2.0
cart.pyとtest_cart.pyの2つのファイルを含むプロジェクトフォルダーを作成します。 Pytest は、test_*.py または *_test.py という名前のファイル、test で始まる関数、Test で始まるクラスという命名規則に従ってテストを自動的に検索します。テストが選択されない場合は、最初に名前の不一致を確認する必要があります。
テストするコード
# cart.py
class Cart:
def __init__(self):
self.items = []
def add(self, name, price, qty=1):
if qty < 1:
raise ValueError("qty must be at least 1")
self.items.append((name, price, qty))
def total(self, discount=0):
subtotal = sum(price * qty for _, price, qty in self.items)
return round(subtotal * (1 - discount / 100), 2)
最初のテスト
# test_cart.py
from cart import Cart
def test_empty_cart_is_free():
assert Cart().total() == 0
それは完全なテストです。プロジェクト フォルダーから pytest を実行すると、1 つのテストに合格したことが報告されます。インポート エラーが発生した場合は、python -m pytest として実行すると、現在のフォルダーがインポート パスに追加されます。
読み取り失敗
ここが pytest の真価を発揮するところです。以下は、意図的に間違った期待値を使用したテストです。
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
assert c.total() == 1400
そして、これを実行すると次のように出力されました。
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
> assert c.total() == 1400
E assert 1500.0 == 1400
E + where 1500.0 = total()
FAILED fail_example.py::test_wrong_total - assert 1500.0 == 1400
============================== 1 failed in 0.12s ==============================
> は失敗した行を示し、E の行は実際の値を示します。 pytest は assert ステートメントを書き換えて、比較内容をレポートできるようにするため、カスタム メッセージを追加する必要はありません。リストや辞書に対しても同様のことが行われ、どの項目が異なるかを正確に指摘します。
テストの例外
エラー処理も動作であるため、テストする価値があります。 pytest.raises は、ブロックが予想される例外を発生させた場合にのみ合格します。
import pytest
def test_rejects_zero_qty():
with pytest.raises(ValueError, match="at least 1"):
Cart().add("Pen", 10, qty=0)
オプションの match 引数は正規表現を使用してメッセージをチェックするため、別の ValueError が誤って渡されることはありません。このようなエラーを発生させて処理する方法については、Python 例外処理 のガイドをご覧ください。
備品: 再利用可能なセットアップ
ほとんどのテストでは、最初に何かを準備する必要があります。 フィクスチャはそれを提供する関数です。これを @pytest.fixture で修飾すると、それを引数として指定するテストは結果を受け取ります。
@pytest.fixture
def cart():
c = Cart()
c.add("Keyboard", 1500)
c.add("Mouse", 500, qty=2)
return c
def test_total(cart):
assert cart.total() == 2500
各テストはデフォルトで新しいカートを取得するため、テストが相互に影響を与えることはありません。 Pytest は引数名をフィクスチャの名前と照合します。また、フィクスチャを自分で呼び出すことはありません。 @pytest.fixture はデコレータであり、Python デコレータの説明で説明します。
収量を伴うクリーンアップ
後片付けが必要な場合は、return の代わりに yield を使用してください。 yield 以降のコードは、テストが失敗した場合でも、テスト終了時に実行されます。
@pytest.fixture
def temp_db():
print("\nopen db")
yield {"users": []}
print("close db")
def test_db(temp_db):
assert temp_db["users"] == []
-s を実行して印刷出力を表示すると、注文がオープン、テスト、そしてクローズされたことが確認されました。
フィクスチャスコープとconftest.py
デフォルトでは、フィクスチャはテストごとに 1 回実行されます。データベースやブラウザなどの高価なセットアップの場合は、scope を使用してその有効期間を変更します。
| 範囲 | ごとに 1 回作成されます |
|---|---|
function (デフォルト) |
テスト |
クラス |
テストクラス |
モジュール |
ファイル |
パッケージ |
パッケージ |
セッション |
テスト実行全体 |
複数のファイルで使用されるフィクスチャを conftest.py というファイルに置きます。 Pytest はそれを自動的にロードするため、テストはインポートせずにそのフィクスチャを使用できます。ただし、あるテストで行われた変更が次のテストに漏洩する可能性があるため、共有スコープには注意してください。
パラメータ化: 1 つのテスト、多数の入力
各値のテストをコピーするのではなく、ケースをリストします。
@pytest.mark.parametrize("discount, expected", [
(0, 2500),
(10, 2250),
(100, 0),
])
def test_discount(cart, discount, expected):
assert cart.total(discount) == expected
各行は独自のテストとなり、完全なファイルを実行したときの詳細な出力でこれを確認できます。
test_cart.py::test_total PASSED [ 16%]
test_cart.py::test_discount[0-2500] PASSED [ 33%]
test_cart.py::test_discount[10-2250] PASSED [ 50%]
test_cart.py::test_discount[100-0] PASSED [ 66%]
test_cart.py::test_rejects_zero_qty PASSED [ 83%]
test_cart.py::test_empty_cart_is_free PASSED [100%]
============================== 6 passed in 0.05s ==============================
1 つの行が失敗しても、他の行は引き続き実行され、名前によって問題の原因となった値が正確にわかります。 parametrize と cart フィクスチャを組み合わせていることに注目してください。バグが見つかる可能性が高い値を選択するには、境界値分析を使用します。
ヒント: パラメーターが長い場合や不明瞭な場合は、ids=["none", "ten", "full"] を渡して、レポート内で各ケースに読みやすい名前を付けます。
便利な内蔵器具
Pytest には、既製のフィクスチャがいくつか含まれています。これら 2 つは特に便利で、今回の実行では両方とも合格しました。
def test_write_report(tmp_path):
report = tmp_path / "report.txt"
report.write_text("passed")
assert report.read_text() == "passed"
def read_mode():
return os.environ.get("APP_MODE", "dev")
def test_mode(monkeypatch):
monkeypatch.setenv("APP_MODE", "staging")
assert read_mode() == "staging"
tmp_path では、各テストに固有の一時フォルダーが与えられるため、テストが実際のファイルに触れることがありません。 monkeypatch 環境変数または属性を変更し、テスト終了時に変更を元に戻します。もう 1 つの便利な機能は capsys で、印刷出力をキャプチャして確認できるようにします。
マーカー: スキップおよび xfail
マーカーはテストにラベルと動作を追加します。
@pytest.mark.skip(reason="payment sandbox is down")
def test_payment():
assert False
@pytest.mark.xfail(reason="floating point")
def test_rounding():
assert 0.1 + 0.2 == 0.3
skip はテストをまったく実行しません。 xfail は実行しますが、失敗が予想されるため、既知の問題によってビルドが中断されることはありません。同じファイル内の他の追加のテストを使用して、実行結果を 3 passed, 1 skipped, 1 xfailed として要約します。ちなみに、この丸めテストは実際に失敗します。浮動小数点演算では、0.1 + 0.2 は正確に 0.3 にはなりません。小数を比較する場合は pytest.approx(0.3) を使用します。
@pytest.mark.slow などの独自のマーカーを作成し、pytest -m slow でマーカーのみを実行したり、-m "not slow" でマーカーを省略したりすることもできます。警告を回避するには、構成ファイルにカスタム マーカーを登録します。
便利なコマンドラインフラグ
| コマンド | 何をするのか |
|---|---|
pytest -v |
各テスト名を表示 |
pytest -q |
短い概要を表示する |
pytest -x |
最初の失敗で停止する |
pytest -k 割引 |
名前が単語と一致するテストを実行する |
pytest -s |
print の出力を表示 |
pytest --lf |
最後の失敗のみを再実行します |
pytest --pdb |
失敗時にデバッガを開く |
pytest test_cart.py::test_total |
特定のテストを 1 つ実行する |
CI で pytest を実行する
テストは、変更のたびに自動的に実行される場合に最も価値があります。最小限の GitHub Actions ジョブは次のようになります。
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install -r requirements.txt
- run: python -m pytest
テストが失敗すると、Pytest はゼロ以外のコードで終了し、パイプラインが停止します。このワークフロー ファイルは実行しませんでしたので、プロジェクトに合わせて調整してください。 GitHub Actions CI/CD ガイドで詳細が説明されています。 Selenium Python チュートリアルとページ オブジェクト モデル チュートリアルが示すように、Pytest はブラウザ テストにも適しています。
まとめ
これで、ほとんどの Python テスト スイートに必要なものが手に入りました。プレーンなアサート、セットアップ用のフィクスチャ、バリエーション用のパラメータ化、および速度用のいくつかのフラグです。小さなことから始めましょう。最近バグを修正した関数を 1 つ選択し、最初にそのバグのテストを作成します。各レベルで何をテストすればよいかわからない場合は、単体テストと統合テストについてお読みください。
よくある質問
pytest は何に使用されますか?
Pytest は Python テスト フレームワークです。これは単体テスト、統合テスト、API テストに使用され、Selenium や Playwright などのブラウザ ツールとも連携します。
pytestはunittestよりも優れていますか?
多くのチームは、よりシンプルな構文、フィクスチャー、より明確なエラーのためにこれを好みます。 Unittest はインストールする必要がなく、pytest は既存の Unittest テストも実行できます。
pytestのフィクスチャとは何ですか?
フィクスチャは、データや接続など、テストに必要なものを準備する関数です。テストは、引数として名前を付けることでそれを受け取ります。
conftest.pyとは何ですか?
これは、テスト ファイル間でフィクスチャとフックを共有するための特別なファイルです。 Pytest はそれを自動的にロードするため、そのフィクスチャには import ステートメントは必要ありません。
pytest がテストを見つけられないのはなぜですか?
通常、それは名前の問題です。ファイルの名前は test_*.py または *_test.py にする必要があり、関数は test で始まる必要があります。また、正しいフォルダーから実行したことを確認してください。
学び続ける
テスト、WordPress、または SEO についてサポートが必要ですか?
私たちは、チームがより優れたソフトウェアを出荷し、サイトを成長させるのを支援します。あなたが取り組んでいることを教えてください。明確な次のステップを提案します。
詳しいガイドはこちら テスト、AI、最新の開発
この記事は気に入りましたか?トピックを選択して、最新のチュートリアルに直接アクセスしてください。
AI 幻覚の説明: 言語モデルが物事をでっち上げる理由とそれを軽減する方法
AI 幻覚について説明しました。幻覚とは何か、言語モデルが幻覚を生成する理由、一般的な種類、グラウンディングとプロンプトで幻覚を軽減する方法、そして私たちが実行した簡単なチェックです。
記事を読む →DevOps環境変数の説明: .env ファイル、シークレット、および設定が正しく行われている
実行した Python の例を使用して環境変数について説明します。環境変数の読み取りと設定、すべての値が文字列である理由、.env ファイル、プロセスの継承、シークレット、検証について説明します。
記事を読む →ソフトウェア開発API レート制限の説明: アルゴリズム、ヘッダー、および 429 エラーの処理
API レート制限については、実行したシミュレーションで説明します。トークン バケット、固定ウィンドウ、スライディング ウィンドウ、429 応答、レート制限ヘッダー、バックオフによる再試行、およびテスト制限です。
記事を読む →テスト自動化Python でのモッキング:unittest.mock、patch、およびテストを嘘にする間違い
Python でのunittest.mockによるモック、テスト済み: モックとreturn_value、side_effect、名前が使用されている場所のパッチ、仕様と自動仕様、日付のモック、およびよくある間違い。
記事を読む →ソフトウェアテストコードカバレッジの説明: 回線カバレッジとブランチカバレッジ、および 100% の実際の意味
実際のcoverage.pyの実行でコードカバレッジを説明: 行、分岐、条件のカバレッジ、レポートの読み取り、100%のカバレッジでもバグを見逃す可能性がある理由、および賢明なターゲット。
記事を読む →データベースとSQLSQL における DELETE、TRUNCATE、DROP: 違い、ロールバック、およびそれぞれをいつ使用するか
DELETE、TRUNCATE、DROP について、テスト済み SQL を使用して説明します。それぞれの削除内容、ロールバック、トリガー、ID リセット、速度、PostgreSQL、MySQL、SQL Server、SQLite の違いについて説明します。
記事を読む →データベースとSQLSQL ビューの説明: 作成、使用、落とし穴の回避、例を示します
SQL ビューについて、実行したクエリとともに説明しました。ビューの作成、ライブ結果、列の非表示、パフォーマンス、更新可能なビューと具体化されたビュー、壊れた依存関係、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発TypeScript インターフェイスと型: 実際の違い、コンパイラでテスト
TypeScript インターフェイスと型、実際のコンパイラでチェック: 両方でできること、片方だけでできること、宣言のマージ、拡張と交差、および従うべき簡単なルール。
記事を読む →ソフトウェア開発Python *args と **kwargs の説明: 柔軟な関数と明確な例
Python の *args と **kwargs について、実行したコードで説明しました。パッキングとアンパッキング、パラメーターの順序、キーワードのみの引数と位置のみの引数、デコレーター、一般的なエラーです。
記事を読む →ソフトウェア開発Python Lambda 関数: 構文、実際の用途、および使用すべきでない場合
Python のラムダ関数について、実行したコードとともに説明します。構文、キーによるソート、マップとフィルター、クロージャー、遅延バインディング トラップ、通常の def がより適切な選択である場合。
記事を読む →人工知能AIエージェントとは何ですか?シンプルなエージェント ループを実行できる仕組み
AIエージェントとは何ですか?エージェント ループ、ツール、メモリ、ガードレール、実行した小さな Python ループ、実際のリスク、およびシンプルなチャットボットがより良い選択である場合についてのわかりやすいガイドです。
記事を読む →DevOpsモニタリングと可観測性: ログ、メトリクス、トレースによる本当の違い
モニタリングと可観測性について説明: 既知および未知の障害、ログ、メトリクスとトレース、チェックアウト インシデントのウォークスルー、ゴールデン シグナル、OpenTelemetry、および便利なアラート。
記事を読む →DevOpsDocker ボリュームとバインド マウント: コンテナ データを正しい方法で保持する
Docker ボリュームとバインド マウントについて説明します。コンテナ データが消える理由、名前付きボリューム、バインド マウント、tmpfs、Compose の例、バックアップ、アクセス許可、およびそれぞれをいつ使用するかについて説明します。
記事を読む →テスト自動化TDD と BDD: 主な違い、1 つの機能が両方の方法で構築され、それぞれをいつ使用するか
TDD と BDD は、両方の方法で構築された 1 つの割引機能で説明されています。実行したコードによるレッド-グリーン-リファクタリング、Given-When-Then シナリオ、ツール、トレードオフ、およびそれぞれをいつ使用するかです。
記事を読む →ソフトウェアテストユーザー受け入れテスト (UAT): プロセス、チェックリスト、および実際の例
ユーザー受け入れテストの説明: 誰が実行するか、QA との違い、7 段階のプロセス、UAT テスト ケース テンプレート、チェックリスト、サインオフ基準、およびよくある間違い。
記事を読む →データベースとSQLSQL NULL 値の説明: IS NULL、COALESCE、NULLIF、および回避すべきトラップ
SQL の NULL 値について、実行したクエリで説明しました。3 つの値のロジック、IS NULL、COALESCE、NULLIF、集計、結合、並べ替えでの NULL の扱い方、およびそれが密かに引き起こすバグです。
記事を読む →データベースとSQLSQL CASE WHEN ステートメント: 構文、実際の例、およびよくある間違い
SQL CASE WHEN では、単純な検索フォーム、条件順序、SUM を使用したピボット、COUNT トリック、カスタム並べ替え、更新、回避すべき NULL トラップなど、実行したクエリを使用して説明しました。
記事を読む →ソフトウェア開発JWTとは何ですか? JSON Web トークンを実際の例で説明する
JWTとは何ですか? JSON Web トークンについて説明しました。3 つの部分、実行したコード内で構築および改ざんされたトークン、JWT とセッション、ストレージ、リフレッシュ トークン、およびセキュリティ上の間違いです。
記事を読む →ソフトウェア開発JavaScript イベントループの説明: コールスタック、マイクロタスク、タイマーと例
JavaScript イベント ループについて、実行したコードで説明しました。コール スタック、タスク キュー、マイクロタスク キュー、setTimeout 0 が即時ではない理由、ブロッキング、スターベーション、およびインタビュー クイズです。
記事を読む →ソフトウェア開発Python ジェネレーターと収量の説明: 実際の例でメモリを節約する
Python ジェネレーターと Yield について、実行したコードを使用して説明します。一時停止と再開の方法、メモリ節約の測定、パイプライン、無限シーケンス、Yield from、send、および一般的なトラップについて説明します。
記事を読む →人工知能埋め込みとは何ですか?ベクトルとコサインの類似度を簡単に説明
埋め込みとは何ですか?ベクトル、コサイン類似度、セマンティック検索に関する平易なガイド。私たちが実行した小さな例、一般的な使用法、モデルの選択、既知の制限が含まれています。
記事を読む →DevOpsBlue-Green デプロイメントと Canary デプロイメント: 違い、トレードオフ、および選択方法
ブルー グリーン デプロイメントとカナリア デプロイメントについて説明: それぞれの仕組み、コスト、リスクとロールバック、テストした安定したユーザー バケット化、データベース移行、ローリング アップデート、および選択方法。
記事を読む →テスト自動化不安定なテスト: 問題の原因とそれを永久に修正する方法
不安定なテストについては、私たちが実行したデモを使用して説明しました。主な原因、確認および診断する方法、タイミングの適切な修正、共有された状態と日付、隔離プロセスなどです。
記事を読む →ソフトウェアテスト負荷テストとストレス テスト: 違い、メトリクス、および k6 の例
ロード テストとストレス テストについて説明します。それぞれが何を証明するか、スパイク テストとソーク テスト、重要な指標、平均値が誤解を招く理由、K6 の例、テストの計画方法について説明します。
記事を読む →ソフトウェアテストテスト ケースとテスト シナリオ: 主な違い、例、およびそれぞれをいつ使用するか
テスト ケースとテスト シナリオの説明: 明確な定義、並べて表、シナリオからケースへの 1 つのパスワード リセット機能、テンプレート、およびそれぞれをいつ使用するか。
記事を読む →データベースとSQLSQL クエリの最適化: 実行プランを読み取り、タイミングを考慮して遅いクエリを修正
SQL クエリの最適化は 100 万行でテストされています。実行プランの読み取り、適切なインデックスの追加、検索対象外のフィルターの修正、複合インデックスとキーセットのページネーションの使用。
記事を読む →データベースとSQLSQL UNION と UNION ALL: 違い、例、テストされたパフォーマンス
SQL UNION と UNION ALL について、実行したクエリで説明しました。重複、両方に従うルール、実際のデータのバグ、測定されたパフォーマンス、INTERSECT と EXCEPT、およびそれぞれをいつ使用するかについて説明します。
記事を読む →ソフトウェア開発JavaScript Fetch API チュートリアル: GET、POST、エラー処理、タイムアウト
ローカル サーバーに対してテストされた JavaScript Fetch API チュートリアル: GET と POST、404 がスローされない理由、再利用可能なヘルパー、クエリ文字列、タイムアウト、CORS、およびよくある間違い。
記事を読む →ソフトウェア開発Python ファイル処理: 読み取り、書き込み、CSV、JSON、パスライブラリと例
Python のファイル処理について、実行したコードで説明します。オープン モード、大きいファイルの読み取り、CSV、JSON、パスライブラリ、バイナリ ファイル、安全な書き込み、エラー処理、およびよくある間違いについて説明します。
記事を読む →ソフトウェア開発Python のクラスとオブジェクト: 実際の例を含む OOP チュートリアル
Python のクラスとオブジェクトについて、実行したコードとともに説明します: __init__、メソッド、クラスとインスタンスの属性、継承、プロパティ、ダンダー メソッド、データクラス、およびよくある間違い。
記事を読む →人工知能大規模言語モデルとは何ですか? LLM の仕組みを誇大広告なしで説明
大規模言語モデルとは何ですか? LLM は、トークン、エンベディング、アテンション、トレーニング、温度およびコンテキスト ウィンドウ、小さな次の単語のデモ、実際の制限など、平易な言葉で説明されています。
記事を読む →DevOps初心者のための Linux コマンド: 例を含む基本ターミナル ガイド
初心者向けの Linux コマンド。ナビゲーション、ファイル、ログの表示、grep、パイプ、権限、プロセス、アーカイブなどのタスク別にグループ化されており、実用的なログ分析の例も含まれています。
記事を読む →テスト自動化Selenium と Playwright: 主な違い、コードの比較、どちらを選択するか
Selenium と Playwright の比較: アーキテクチャ、待機、ブラウザと言語のサポート、デバッグ、両方のツールでの同じテスト、移行のアドバイスと選択方法。
記事を読む →ソフトウェアテスト等価性分割: テスト設計手法を実際の例で説明
等価性パーティション化について説明しました。有効なパーティションと無効なパーティションを見つける方法、年齢、パスワード、クーポンに関する実際の例、実行したテスト、境界と組み合わせる理由。
記事を読む →ソフトウェアテストソフトウェアテストにおける重大度と優先度: 相違点、マトリックス、および実際の例
ソフトウェア テストにおける重大度と優先度について説明します。明確な定義、例を含む 4 方向のマトリックス、レベル スケール、それぞれの設定者、バグ トリアージの実行方法。
記事を読む →データベースとSQLSQL サブクエリのチュートリアル: 型、相関サブクエリ、および EXISTS と例
実行したクエリを含む SQL サブクエリのチュートリアル: スカラー、IN、FROM、SELECT サブクエリ、相関サブクエリ、EXISTS、NOT IN NULL トラップ、サブクエリ対 JOIN 対 CTE。
記事を読む →データベースとSQLSQL トランザクションと ACID の説明: COMMIT、ROLLBACK、分離レベル
SQL トランザクションと ACID について、実行した銀行振込で説明しました。COMMIT、ROLLBACK、セーブポイント、ロック、分離レベル、ダーティ リード、デッドロック、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発Git コマンドのチートシート: 実際に使用するコマンドと例
実際のデモ リポジトリからの出力を含む、タスク別にグループ化された Git コマンド チート シート (セットアップ、ステージング、ブランチ、リモート、スタッシュ、履歴、間違いの取り消し)。
記事を読む →ソフトウェア開発JavaScript Promise の説明: then、catch、Promise.all、およびよくある間違い
JavaScript の Promise を、実行したコードで説明します。ステート、then および catch チェーン、エラー処理、Promise.all、allSettled、race および any、イベント ループ、およびよくある間違いです。
記事を読む →ソフトウェア開発Python 辞書チュートリアル: メソッド、例、一般的なパターン
私たちが実行したコードを含む Python 辞書チュートリアル: 辞書の作成、読み取り、更新、主要なメソッド、マージ、内包表記、パターンのカウントとグループ化、およびよくある間違い。
記事を読む →人工知能RAGとは何ですか?検索拡張生成を実際の例で説明する
RAGとは何ですか?検索拡張生成について、インデックス作成、チャンク化、埋め込み、検索、実際に動作する小さな Python の例、評価、一般的な失敗など、ステップごとに説明します。
記事を読む →DevOps初心者向け Terraform チュートリアル: 最初のファイルからモジュールまでのコードとしてのインフラストラクチャ
初心者向けの Terraform チュートリアル: クラウド アカウントなしで開始し、初期化、計画、適用を学び、次に変数、出力、状態、モジュール、安全なチーム ワークフローを学びます。
記事を読む →DevOpsDocker と Kubernetes: 主な違い、連携方法、どちらが必要か
Docker と Kubernetes について説明しました。それぞれの機能、同じアプリを両方で実行すること、Docker Compose と Swarm の比較、dockershim の変更、必要なものを決定する方法などです。
記事を読む →テスト自動化初心者向けの Pytest チュートリアル: フィクスチャ、パラメータ化、実際の例
pytest 9.2 で実行したテストを含む初心者向けの pytest チュートリアル: アサーション、フィクスチャ、parametrize、conftest、マーカー、tmp_path、monkeypatch、便利なフラグ、CI。
記事を読む →ソフトウェアテストソフトウェア テスト ライフ サイクル (STLC): 6 つのフェーズ、開始基準と終了基準、例
ソフトウェア テストのライフ サイクルについては、開始基準と終了基準を含む 6 つの STLC フェーズ、成果物、実際に動作するログイン機能の例、STLC と SDLC、およびアジャイルにおける STLC について説明しました。
記事を読む →ソフトウェア開発Git mergeとrebaseの違い:例と使い分け
Git mergeとrebaseの違いを、実際のログ出力、比較表、rebaseの黄金律、安全なチームワークフローで解説します。
記事を読む →ソフトウェア開発Pythonのリスト内包表記:構文・例・使うべきでない場面
Pythonのリスト内包表記を解説:構文、フィルタ、if-else、ネストしたループ、実測した処理時間、そして通常のforループの方が良い場面。
記事を読む →データベースとSQLSQL JOINを例で解説(Inner・Left・Right・Full)
サンプルのテーブルとクエリでSQL JOINを順に解説。INNER、LEFT、RIGHT、FULL、CROSS、SELFに加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →