Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonにおけるテストのイントロダクション | Pytestフレームワークの習得
Python構造化プログラミング

bookPythonにおけるテストのイントロダクション

メニューを表示するにはスワイプしてください

エラー処理のセクションでは、構文エラーと実行時エラーの管理方法について学びましたが、論理エラーの扱いについては触れませんでした。本セクションでは、アプリケーションのロジックを検証するために不可欠な2種類のテスト、手動テスト自動テストについて解説します。

テストは大きくこれら2つのカテゴリに分けられます。手動テストは、テスターがアプリケーションを操作し、要件に従って機能の正しさを確認する方法です。このテストは有用ですが、時間がかかり、人的ミスが発生しやすいという欠点があります。

一方、自動テストはスクリプトやツールを用いて、直接人が介在せずに自動的にテストを実行し、アプリケーションが期待通りに動作することを保証します。これにより、テストの速度が向上し、精度と一貫性も高まります。

テスト駆動開発(TDD)の概要

自動テストにおける主要な手法の一つがテスト駆動開発(TDD)です。TDDは、実際のコードを書く前にテストを書くという革新的な開発プロセスです。このプロセスは、テストを書く→テストを実行する(最初は失敗するはず)→テストに合格するために最小限のコードを書く→コードを整理し、クリーンで効率的にリファクタリングする、というシンプルなサイクルで進みます。

UnittestとPytestフレームワークの概要

Pythonにはテストの記述と実行のためのフレームワークがいくつか用意されており、UnittestとPytestが特に広く利用されています。

Unittest

UnittestはPythonの標準搭載テストフレームワークです。Unittestはクラスベースであり、テストをunittest.TestCaseのサブクラスとしてクラス内にまとめる必要があります。

Pytest

Pytestは強力なサードパーティ製テストフレームワークで、シンプルなものから複雑なものまで幅広いテストケースに対応します。Unittestとは異なり、Pytestではテスト関数をクラスにまとめずに記述できます。

平均値計算関数のテスト

2つの数値の平均を計算するシンプルな関数を例に、UnittestPytestの両方でどのようにテストできるかを見ていきます。

テスト対象の関数:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

Unittestによるテスト

import unittest

class TestAverageCalculation(unittest.TestCase):
    def test_average(self):
        result = calculate_average(10, 20)
        self.assertEqual(result, 15)

pytestによるテスト

import pytest

def test_average():
    assert calculate_average(10, 20) == 15

UnittestはxUnit形式に慣れており、構造化されたOOPアプローチでテストを行いたい開発者に最適ですが、Pytestはより柔軟でシンプルなテストを求める方や、Unittestでは扱いにくい複雑なテストにも対応できる強力な機能を必要とする方に適しています。

次の章でお会いしましょう。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  1
some-alt