ホームページ >バックエンド開発 >Python チュートリアル >5 つの優れた Python テスト フレームワーク
この記事では、読者はテスト自動化のための上位 5 つの Python フレームワークを実際に比較します。それぞれの長所と短所をすべて確認してください。
Tiobe が発行したインデックスによると、Python は 2018 年の最優秀プログラミング言語に選ばれて以来、ランキングを上昇し続けており、現在 Java と C に次いで 3 位にランクされています。 。 Python ベースのテスト自動化フレームワークも、この言語の使用が増えるにつれて人気が高まっています。どうやら、開発者とテスターは、プロジェクトに最適なフレームワークを選択する際に少し混乱するようです。どれかを選択する際には、フレームワークのスクリプト品質、テスト ケースの単純さ、モジュールを実行して弱点を見つけるテクニックなど、多くのことを判断する必要があります。これは、2019 年のテスト自動化の上位 5 つの Python フレームワークと、他のフレームワークと比較した長所と短所を比較できるようにするための私の試みです。したがって、要件に応じて理想的な Python テスト自動化フレームワークを選択できます。
Robot Framework は、主に受け入れテスト主導の開発と受け入れテストに使用され、Python テストのトップ フレームワークの 1 つです。 Python で開発されましたが、.net ベースの IronPython および Java ベースの Jython 上でも実行できます。 Python フレームワークとしてのロボットは、Windows、MacOS、Linux などのすべてのプラットフォームと互換性があります。
他の Python フレームワークと比較した、テスト自動化フレームワークとしてのロボットの長所と短所を見てみましょう:
自動化分野の初心者で開発経験が少ない場合は、最上位の Python テスト フレームワークとして Robot を使用してください。 Pytest や Pyunit よりも優れており、豊富な組み込みライブラリがあり、より簡単なテスト指向の DSL を使用するため、使いやすいです。ただし、複雑な自動化フレームワークを開発したい場合は、Pytest または Python コードを含むその他のフレームワークに切り替えることをお勧めします。
Pytest はあらゆる種類のソフトウェア テストに使用され、テスト自動化のためのもう 1 つのトップ Python テスト フレームワークです。このツールはオープンソースであり、習得が簡単で、QA チーム、開発チーム、個人の実践グループ、オープンソース プロジェクトで使用できます。 Dropbox や Mozilla などの大手を含むインターネット上のほとんどのプロジェクトは、「アサーション リライト」などの便利な機能を備えているため、unittest (Pyunit) から Pytest に切り替えました。この Python フレームワークが特別である理由を詳しく見てみましょう。
Pytest には、Python の実用的な知識以外に複雑なものは必要ありません。必要なのは、次の機能を備えた作業用デスクトップだけです。
Pytest が特別なルーチンを使用するという事実は、互換性に関して妥協する必要があることを意味します。テスト ケースを簡単に作成できますが、これらのテスト ケースを他のテスト フレームワークで使用することはできません。
そうですね、本格的な言語を学ぶことから始める必要がありますが、一度マスターすれば、すべての機能を利用できるようになります。静的コード分析、複数の IDE のサポート、そして最も重要なのは、効果的なテスト ケースの作成です。機能テスト ケースを作成したり、複雑なフレームワークを開発したりするには、unittest よりも優れていますが、単純なフレームワークを開発することが目的の場合、その利点はロボット フレームワークと多少似ています。
Unittest (PyUnit) は、単体テスト用の Python 独自の標準テスト自動化フレームワークです。これは JUnit から多大な影響を受けています。アサーション メソッドとすべてのクリーンアップおよびセットアップ ルーチンは、基本クラス TestCase によって提供されます。 TestCase サブクラス内のすべてのメソッドの名前は、「test」で始まります。これにより、テスト ケースとして実行できるようになります。 load メソッドと TestSuite クラスを使用して、テストをグループ化してロードできます。これらを組み合わせて使用して、カスタム テスト ランナーを構築できます。 Selenium テストに JUnit を使用するのと同様に、unittest には XML レポートを使用および生成する機能もあります (unittest-sml-reporting)。
unittest にはデフォルトで Python が付属しているため、そのような前提条件はありません。これを使用するには、Python フレームワークの標準的な知識が必要です。追加のモジュールをインストールする場合は、pip と開発用の IDE をインストールする必要があります。
Python 標準ライブラリの一部として、Unittest を使用すると、いくつかの利点があります。
私の個人的な意見と他の Python 開発者の意見では、Pytest はテスターがより良い自動化コードを書くことを可能にする特定のイディオムを導入しています。非常にコンパクトな方法。 Unittest はデフォルトのテスト自動化フレームワークとして表示されますが、その動作原理と命名規則は標準の Python コードとは若干異なり、必要な定型コードが多すぎるため、Python テスト自動化フレームワークとしてはあまり人気がありません。
開発者、ビジネス関係者、品質アナリスト間のコラボレーションを促進する最新のアジャイルベースのソフトウェア開発アプローチである行動駆動型開発については誰もが知っています。 Behave は、チームが複雑なことをせずに BDD テストを実行できるようにするもう 1 つのトップ Python テスト フレームワークです。このフレームワークの性質は、自動テストの SpecFlow や Cucumber と非常に似ています。テスト ケースはシンプルで読みやすい言語で記述され、実行中にコードに修正されます。動作は動作仕様に基づいて設計され、これらのステップは他のテスト シナリオで再利用されます。
Python の基本的な知識がある人は誰でも Behave を使用できるはずです。前提条件を見てみましょう:
駆動型テスト フレームワークにおける他のすべての動作と同様、Behave の利点についての意見は人によって異なります。 Behave を使用する一般的なメリットとデメリットを見てみましょう。
唯一の欠点は、ブラック ボックス テストでのみ機能することです。
まあ、先ほども述べたように、Behave (Python フレームワーク) はブラック ボックス テストにのみ適しています。 Web テストは、ユースケースを平易な言葉で説明できるため、良い例です。ただし、冗長性は複雑なテスト シナリオを複雑にするだけであるため、Behave は統合テストや単体テストには適していません。開発者とテスターの両方が pytest-bdd を推奨しています。これは、Pytest のすべての利点を利用し、動作主導のシナリオをテストするために実装されているため、Behave の代替となります。
Lettuce は、Cucumber と Python をベースにした、もう 1 つの使いやすい動作主導型自動化ツールです。 Lettuce の主な目標は、動作駆動型開発の一般的なタスクに焦点を当て、プロセスをより簡単で楽しいものにすることです。
少なくとも Python 2.7.14 と IDE がインストールされている必要があります。 Pycharm またはその他の任意の IDE を使用できます。さらに、テストを実行するには、Python パッケージ マネージャーをインストールする必要があります。
Lettuce を Python フレームワークとして使用する場合の欠点は 1 つだけです。動作駆動テストを正常に実行するには、開発チーム、QA、関係者間のコミュニケーションが必要です。欠席やコミュニケーションミスがあるとプロセスが曖昧になる可能性があり、どのチームでも質問できる可能性があります。
開発者や自動化テスターによると、BDD テストを実行する場合は Cucumber の方が便利です。しかし、Python 開発者と QA について言えば、pytest-bdd のような人はいません。コンパクトさや理解しやすいコードなどの Pytest の優れた機能はすべて、動作駆動型テストの冗長性と組み合わされたこのフレームワークに実装されています。
上記の記事では、さまざまなテスト手順に基づいて、2019 年のテスト自動化のための Python フレームワークの上位 5 つについて説明しました。 Pytest、Robot Framework、unittest は機能テストと単体テストに使用されますが、Lettuce と Behave は動作駆動型テストにのみ適しています。
説明された機能から、機能テストには Pytest が最適であると結論付けることができます。ただし、Python ベースの自動テストを初めて使用する場合、ロボット フレームワークは始めるのに最適なツールです。機能は限られていますが、トラック上で簡単にリードすることができます。 Python ベースの BDD テストの場合、Lettuce と Behave は同様に優れていますが、すでに Pytest の経験がある場合は、pytest-bdd を使用することをお勧めします。
私の記事が、Python のトップから学ぶのに役立つことを願っています。テスト フレームワーク Python Web オートメーションのニーズに合わせて適切な選択を行ってください。テストを楽しんでください!
以上が5 つの優れた Python テスト フレームワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。