{"meta":{"title":"単体テストの生成","intro":"Copilot Chat は、関数の単体テストの生成に役立ちます。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/tutorials","title":"チュートリアル"},{"href":"/ja/copilot/tutorials/copilot-cookbook","title":"GitHub Copilot クックブック"},{"href":"/ja/copilot/tutorials/copilot-cookbook/testing-code","title":"コードのテスト"},{"href":"/ja/copilot/tutorials/copilot-cookbook/testing-code/generate-unit-tests","title":"単体テストを生成する"}],"documentType":"article"},"body":"# 単体テストの生成\n\nCopilot Chat は、関数の単体テストの生成に役立ちます。\n\nあらゆるプロジェクトの成功には、適切な単体テスト スイートが不可欠です。 ただし、このようなテストの記述には時間がかかるため、行われないこともよくあります。\nCopilot Chat は、これらのテストを生成するのに役立ちます。\n\n## サンプル シナリオ\n\nデータベースを更新する前にデータを検証する Python 関数があるとします。 検証が期待どおりに実行されることを確認するために、単体テストを作成する必要があります。 これらのテストを生成するように Copilot Chat に依頼できます。\n\n```python id=validate-price\ndef validate_price(price: float):\n  if price <= 0:\n    raise ValueError(\"Price must be greater than 0\")\n  if price > 1000:\n    raise ValueError(\"Price must be less than or equal to 1000\")\n```\n\n## プロンプトの例\n\n```copilot copy prompt ref=validate-price\n/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.\n```\n\n## 応答の例\n\n> \\[!NOTE] 次の応答は例です。 Copilot Chat の応答は非決定的であるため、ここで示したものとは異なる応答が返される可能性があります。\n\n初めて単体テストの生成を Copilot Chat に依頼する場合は、プロジェクトの単体テストを構成するかどうかを確認するメッセージが表示されることがあります。 この例では、この提案を拒否すると想定しています。\n\nCopilot は、テストを生成するための戦略を提供し、テスト自体を提供します。\n\n```python\nimport unittest\nfrom generate_unit_tests import validate_price\n\nclass TestValidateProduct(unittest.TestCase):\n  def test_price_zero(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(0)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_negative(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(-10)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_above_limit(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(1500)\n    self.assertEqual(str(context.exception), \"Price must be less than or equal to 1000\")\n\n  def test_price_edge_case_zero(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(0)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_edge_case_max(self):\n    try:\n      validate_price(1000)\n    except ValueError:\n      self.fail(\"validate_price() raised ValueError unexpectedly!\")\n\nif __name__ == '__main__':\n  unittest.main()\n```\n\n## 詳細については、次を参照してください。\n\n* [GitHub Copilot Chat のプロンプト エンジニアリング](/ja/copilot/concepts/prompting/prompt-engineering)\n* [GitHub Copilot の使用に関するベスト プラクティス](/ja/copilot/get-started/best-practices)"}