ホームページ > バックエンド開発 > Python チュートリアル > Pythonでプロフェッショナルユニットテストを作成します

Pythonでプロフェッショナルユニットテストを作成します

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-03-05 10:46:08
オリジナル
382 人が閲覧しました

Write Professional Unit Tests in Python

単位テストは、信頼できるソフトウェアを構築するための基礎です。多くの種類のテストがありますが、単体テストが最も重要です。ユニットテストを使用すると、コードのスニペットを基本ユニットとして完全にテストし、プログラムを構築するときにそれらに依存していることを確信できます。彼らは、言語の組み込み機能と標準ライブラリの範囲を超えて、信頼できるコードの保護区を拡張します。さらに、Pythonは、ユニットテストの作成を強力にサポートしています。

実行例

すべての原則、ヒューリスティック、およびガイドに飛び込む前に、実際の単体テストの例を見てみましょう。

という新しいディレクトリを作成し、2つのファイルを追加します。

    car.py
  • test_car.py

init .pyファイルを追加して、ディレクトリをPythonパッケージとして設定します。ファイルの構造は次のようにする必要があります。 この例で使用する自動運転車プログラムのロジックを記述するために

car.py
<code>python_tests/
        -__init__.py
        - car.py
        - test_car.py</code>
ログイン後にコピー
ファイルを使用し、

test_car.pyファイルを使用してすべてのテストを記述します。 car.pyファイルコンテンツ:

これは、テストケースクラスの単体テストです。以下に示すように、最も適したモジュールを取得します。

class SelfDrivingCar:
    def __init__(self):
        self.speed = 0
        self.destination = None

    def _accelerate(self):
        self.speed += 1

    def _decelerate(self):
        if self.speed > 0:
            self.speed -= 1

    def _advance_to_destination(self):
        distance = self._calculate_distance_to_object_in_front()
        if distance < 1:  # 假设距离单位为米
            self.stop()
        elif distance < 5:
            self._decelerate()
        elif self.speed < self._get_speed_limit():
            self._accelerate()

    def _has_arrived(self):
        pass  # 需要实现到达目的地判断逻辑

    def _calculate_distance_to_object_in_front(self):
        pass  # 需要实现计算前方物体距离的逻辑

    def _get_speed_limit(self):
        pass  # 需要实现获取速度限制的逻辑

    def stop(self):
        self.speed = 0

    def drive(self, destination):
        self.destination = destination
        while not self._has_arrived():
            self._advance_to_destination()
        self.stop()
ログイン後にコピー

次のテストファイルの下部に次のテストスクリプトを追加することにより、Unittest.mainモジュールをUnitsest Test Frameworkによって提供されるMainモジュールをオーバーライドできます。

from unittest import TestCase
ログイン後にコピー

続行して、以下に示すように、

test_car.py
if __name__ == '__main__':
    unittest.main()
ログイン後にコピー
ファイルの下部にテストスクリプトを追加します。

テストを実行するには、pythonプログラムを実行します:

import unittest
from car import SelfDrivingCar

class SelfDrivingCarTest(unittest.TestCase):
    def setUp(self):
        self.car = SelfDrivingCar()

    def test_stop(self):
        self.car.speed = 5
        self.car.stop()
        self.assertEqual(0, self.car.speed)
        self.car.stop()
        self.assertEqual(0, self.car.speed)

if __name__ == '__main__':
    unittest.main(verbosity=2)
ログイン後にコピー

次の出力が表示されます:

python test_car.py
ログイン後にコピー

テスト検出

<code>test_stop (__main__.SelfDrivingCarTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK</code>
ログイン後にコピー
他の方法と最も簡単な方法は、発見をテストすることです。このオプションは、Python 2.7でのみ追加されます。 2.7より前に、鼻を使用してテストを発見して実行できます。鼻には、テストケースのクラスを作成せずにテスト機能を実行するなど、他の利点があります。しかし、この記事では、UnitStestに固執しましょう。

名前が示すように、-vロゴ:

selfdrivingcartest。

操作を制御するためのいくつかの兆候があります:

テストカバレッジ

テストカバレッジは、しばしば見落とされがちなエリアです。カバレッジとは、テストが実際にテストするコードの量です。たとえば、IFステートメントの関数がある場合は、IFステートメントの真および偽の分岐をオーバーライドするためにテストを作成する必要があります。理想的には、コードはパッケージに含まれている必要があります。各パッケージのテストは、パッケージの兄弟ディレクトリにある必要があります。テストディレクトリでは、パッケージの各モジュールに対してUnittestモジュールという名前のファイルを提供する必要があります。
python -m unittest -h
ログイン後にコピー

結論

単位テストは、信頼できるコードの基礎です。このチュートリアルでは、ユニットテストに関するいくつかの原則とガイドラインを調査し、ベストプラクティスの背後にあるいくつかの理由を説明します。構築するシステムが大きければ大きいほど、より重要な単体テストが行​​われます。しかし、単体テストでは十分ではありません。大規模システムには、統合テスト、パフォーマンステスト、負荷テスト、浸透テスト、受け入れテストなど、他のタイプのテストも必要です。

この記事は更新され、Esther Vaatiからの貢献が含まれています。 Estherはソフトウェア開発者であり、Envato Tutsの貢献者です。

以上がPythonでプロフェッショナルユニットテストを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート