単位テストは、信頼できるソフトウェアを構築するための基礎です。多くの種類のテストがありますが、単体テストが最も重要です。ユニットテストを使用すると、コードのスニペットを基本ユニットとして完全にテストし、プログラムを構築するときにそれらに依存していることを確信できます。彼らは、言語の組み込み機能と標準ライブラリの範囲を超えて、信頼できるコードの保護区を拡張します。さらに、Pythonは、ユニットテストの作成を強力にサポートしています。
すべての原則、ヒューリスティック、およびガイドに飛び込む前に、実際の単体テストの例を見てみましょう。
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.pyif __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>
selfdrivingcartest。
操作を制御するためのいくつかの兆候があります:
テストカバレッジ
テストカバレッジは、しばしば見落とされがちなエリアです。カバレッジとは、テストが実際にテストするコードの量です。たとえば、IFステートメントの関数がある場合は、IFステートメントの真および偽の分岐をオーバーライドするためにテストを作成する必要があります。理想的には、コードはパッケージに含まれている必要があります。各パッケージのテストは、パッケージの兄弟ディレクトリにある必要があります。テストディレクトリでは、パッケージの各モジュールに対してUnittestモジュールという名前のファイルを提供する必要があります。
python -m unittest -h
単位テストは、信頼できるコードの基礎です。このチュートリアルでは、ユニットテストに関するいくつかの原則とガイドラインを調査し、ベストプラクティスの背後にあるいくつかの理由を説明します。構築するシステムが大きければ大きいほど、より重要な単体テストが行われます。しかし、単体テストでは十分ではありません。大規模システムには、統合テスト、パフォーマンステスト、負荷テスト、浸透テスト、受け入れテストなど、他のタイプのテストも必要です。
この記事は更新され、Esther Vaatiからの貢献が含まれています。 Estherはソフトウェア開発者であり、Envato Tutsの貢献者です。
以上がPythonでプロフェッショナルユニットテストを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。