もしあなたが自分の中で考えていたなら。 “うーん、どのプログラミング言語からテストの旅を始めるべきだろうか?” – Python があなたの答えです。 しかし、それは初心者のためだけではありません! LinkedInで行った最近の調査では、経験豊富なプログラマーの間でさえ、約35%がPythonを最も好きなプログラミング言語であると投票しています(ただし、ずっと好きだったJavaには遠く及ばず、32%が2位となりました)。
この記事の終わりまでに、Python プログラミング言語がどれほど強力か、そして、どの Python テスト フレームワークがあなたのプロジェクトのニーズに最も適しているかを理解していただくことが、私の目標です。
Python はオープンソースのプログラミング言語で、直感的でシンプル、人間が読みやすく、エレガントで、あまり複雑でないプログラミング言語を提供することを意図して、1991 年に最初にリリースされました。 そして、テストに関して言えば、そのような品質は必須です。特に、自動化に移行しつつある手動テスター (必ずしもプログラミングのスキルを持っていない) がチームにいて、Python の速い学習曲線を使って素早くスクリプトを書くことができる場合です。
なぜテスト自動化の分野で Python の人気が上昇しているかというと、テスト自動化の最適な選択の1つとして考えられる理由がかなり多くあります。 それらの理由の中で、あなたは見つけることができます。 Pythonの禅(Pythonの設計思想の19の指針)、初心者に優しいが上級者にも強力、オブジェクト指向と関数型の両方、テスト用のパッケージの豊富なライブラリ、世界的に強力なコミュニティ、などなどです。 3337>
The Right Python Testing Framework For You
Pythonの使用が増えるにつれて、Pythonベースのテストフレームワークの人気も高まっています。 最初は、それぞれが長所と短所を持っているので、そこにあるすべての豊富なツールの中からどれを選ぶべきか、少し混乱することがあります。 とはいえ、プロジェクトや組織ごとに要件や制約が異なるため、それらを考慮した上で最適なツールを選択する必要があります。 3337>
- How To Select The Right Test Automation Tool
- How to Select the Best Tool – Research Process
- Criteria for Selecting the Right Functional Testing Tools
そしてもちろん、なぜ長短リストの存在なのかは、お気に入りのツールに関する追加ガイダンスがすべて1箇所で得られるからです! そこで、トップ8のPythonテスティングフレームワークを深く掘り下げ、それらの利点と欠点の両方を調べ、あなたのニーズに合った理想的なPythonテスティングフレームワークを選択することに近づけるようにしましょう。
Python テスト フレームワーク トップ 8 の長所と短所
- Robot Framework
- Pytest
- TestProject
- PyUnit (Unittest)
- Nose2
- Behave
- Lettuce
- Testify
- Conclusion
Robot Framework (RF)
Robot Framework (RF) は受け入れテスト用のオープンソースのテスト自動化フレームワークです。 受入テスト駆動開発(ATDD)およびロボティック・プロセス・オートメーション(RPA)。 コア部分はPythonで実装されていますが、Jython(PythonのJava実装)やIronPython(Python for .NET framework)でも実行可能です。 実行するには、Python バージョン 2.7.14 以上をインストールする必要があります。
Pros
- キーワード駆動型テスト (KDT) のアプローチに基づいているので、人間が読めるキーワードを使ってテストケースを簡単に作成することができます (コーディング経験は必要ありません)。
- 明確でユーザーフレンドリーな HTML レポートデータ (スクリーンショットを含む) を提供します。
- 多くの API を備えた豊富なエコシステムにより、非常に拡張性の高いフレームワークとなり、他のあらゆるサードパーティ製ツールと統合することが可能です。
Cons
- 並列テストは最初からサポートされていませんが、Selenium Grid または Pabot (RF 用の並列実行ツール) によって達成することが可能です。
- 良くも悪くも、事前に定義された方法論に従って作業することを強制されます。
- 実際の if/else 構造はありませんが、同じ効果を得るためのいくつかの方法があります (公式ドキュメントで調べることができます)。 手動テスターおよびビジネス アナリストが自動テストを作成できるようにするキーワード駆動フレームワークのアプローチを実装しようとしている場合、RF は、さまざまな拡張機能 & ライブラリを提供し、簡単に使用できるソリューションとなります。 しかし、複雑なシナリオを開発する場合は、フレームワークに組み込まれていないいくつかのカスタマイズを行う必要があります。
Pytest
Pytest は、おそらく最も広く使われている Python テスト フレームワークの 1 つであるオープンソースのテスティング フレームワークです。 Pytest はユニットテスト、機能テスト、API テストもサポートしています。
Pros
- Allow for compact and simple test suites.
- Is highly extensible by using plugins, such as: pytest-randomly, pytest-cov, pytest-django, pytest-bdd.Pytest は、Python のテストフレームワークとしては最も広く使われているものです。
- また、プロジェクトに pytest html プラグインを追加して、簡単なコマンドライン オプションで HTML レポートを印刷することができます。
- 非常に大きなコミュニティがあります。
- フィクスチャをサポートしており、テストケースを書き直すことなくすべてのパラメータの組み合わせをカバーし、ステップ間のコンテキストを管理するための素晴らしい方法です。
Cons
- Compatibility is not key for Pytest, because you can easily write test cases with Pytest, you will not able to use those in any other testing framework because the usage of Pytest’s unique routines.
ボトムラインは、テストケースとテストフレーム間のルーティングの互換性。TestProject
TestProject は 100% 無料の完全自動フレームワークで、クラウド レポートを備えています。 TestProjectを使用すると、PythonのオープンソースSDKを使用して、モバイル、Webまたは汎用目的のテスト自動化を簡単に開発することができます。 Pythonバージョン3.6以降をサポートし、PytestとUnittestの両方のフレームワークをサポートします。 TestProject には、単一のクロスプラットフォーム エージェント実行ファイルの一部として必要なすべての依存関係が含まれています (この Web セミナー録画を見て始めることができます)。
Pros
- Single Agent 実行ファイルには、モバイル、Web、および汎用テストの自動テストを実行および開発するために必要なすべてのサードパーティ ライブラリが含まれています。
- HTML/PDF 形式の自動クラウドベース レポート (スクリーンショットを含む)。
- RESTful API からアクセスできる実行履歴。
- 常に最新かつ安定した Selenium/Appium ドライバー バージョンで最新に保つ。
- Web, Android, iOS および Generic テスト用の単一 SDK。
- Built-in test runner and reporting capabilities.
- Cross platform support for Mac, Windows, Linux and Docker.
- Large community and support: forum, blog and built-in live chat.
Cons
- The agent can run tests one test at a time, thus for parallel testing you’d need to use Docker Agents.これは、テスト実行の際に1回ずつテストを実行することができるエージェントです。
- レポートは TestProject クラウドでのみ利用可能で、ローカルに保存するには、PDF レポートをダウンロードするか、RESTful API を使用する必要があります。
- Agent は、テストの実行/実行にインターネット接続が必要です。 もしあなたが、自動化の取り組み全体を端から端までカバーする単一のフレームワークをお探しなら、TestProject は間違いなくあなたのためのものであり、初心者から経験豊富な自動化の専門家まで、さまざまなスキルを持つチームに完璧にフィットします。
PyUnit (Unittest)
PyUnit (Unittest) は Python のユニット テスト フレームワークで、JUnit からインスピレーションを受けて作られました。 これは、Python パッケージと一緒に提供されるデフォルトの Python テストフレームワークであり、したがって、ほとんどの開発者がテストを開始します。
Pros
- これは標準 Python ライブラリの一部なので、インストールしなければならない追加モジュールはありません – これは Python パッケージと一緒に提供されます。
- テストレポートの迅速な生成。XML レポートと unittest-sml-reporting の両方。
Cons
- 抽象化をサポートしているので、テストコードの意図が時々不明確になることがある。
- 大量の定型文が必要になる。
- Junit をベースにしているため、Python の snake_case 命名規則ではなく、camelCase 命名規則が使われている。 もしあなたが基本的なユニットテストを探していて、xUnit フレームワークに慣れているなら、 PyUnit はとても簡単に始めることができ、追加の依存関係も必要なく、おそらくあなたにとって最も快適なものになるでしょう。
Nose2
Nose2 は Nose の後継で基本的には PyUnit (Unittest) ですがプラグインを持っています。 Nose2 は、テストの実行、テストの発見、デコレーター、フィクスチャ、パラメータ化などのサポートを追加するさまざまなプラグインによって PyUnit をその機能性以上に拡張します。
Pros
- Python library と一緒に箱から出てきた PyUnit (Unittest) フレームワークを拡張するので簡単に始められる。
- mp プラグインを使用して並列テストを可能にします。
- あなたのライブラリとテスト コードを整理するためのいくつかの簡単なガイドラインに従う限り、テストを自動的に収集します。
Cons
- Lack of extensive documentation which may be hold back if you just getting started.
- Not so actively maintained as opposed to other frameworks.
Bottom line: 3337>
Behave
Behave は最も人気のある Python BDD (behavior-driven development) テストフレームワークの 1 つです。 公式には Cucumber プロジェクトの一部ではありませんが、Cucumber フレームワークと非常によく似た機能を持っています。
Pros
- 読みやすい言語でテストケースを書くことができ、同様の機能を持つチーム間で簡単にコラボレーションできるようになります。
- Gherkin 言語を完全にサポートしており、機能ファイルの作成に技術的な知識は必要ありません。
Cons
- There’s no support for parallel execution.
- Only for black box testing.
Bottom line.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GHOSTICE.GM もしあなたのチームが BDD アプローチに従っていて、以前に BDD の知識 (Cucumber や SpecFlow など) があり、ブラックボックス テストを探しているなら、間違いなく Behave をチェックアウトすべきです。 また、以下のような他のPython BDDフレームワークも検討すべきです。 Pytest-bdd、Lettuce(後述)、RadishなどのPython BDDテストフレームワークも、このPython BDDテストフレームワークの比較記事で調べてみてください。
Lettuce
Lettuce は別の Python BDD フレームワークで、 Cucumber がベースになっています。 Python 2.7.14 以上が必要です。
Pros
- Gherkin 言語をサポートし、技術者ではないチームメンバーも自然言語を使用して簡単にテストを作成できます。 例えば、Lettuce は様々なサーバーやデータベースの動作やインタラクションをテストすることができる。
Cons
- 他のフレームワークの豊富な機能のいくつかに欠けているので、小さなプロジェクトに適している。
- そのサポートとドキュメントは維持されていないようです。
- 実装を成功させるためには、プロジェクトのすべてのステークホルダー (開発、QA、マネージャー) の間で専用のコミュニケーションが必要になります。
Testify
Testify は、一般的な Unittest および Nose フレームワークを置き換えるように設計されており、標準の Unittest に対して高度な機能を備えています。
- Unittest に慣れている人にとって、Testify は非常に簡単に使い始めることができます。
Cons
- Lack of extensive documentation, thus beginners may need to find relevant resources.
- Parallel testing is not easy to achieve.
Bottom line.The Testify は、Nose2と同様、テスト発見を可能にするシンプルな構文です。
Conclusion
この Python テストフレームワークの比較リストはここまでで、あとは、あなたの要件に最も合うものを選ぶだけです。 達成しようとしているのはユニット テストですか、それとも機能テストですか。 あなたのチームは技術やコーディングの経験を持っていますか、それともほとんど初心者で構成されていますか? これらの質問と他の多くの質問を考慮しながら、決断を下す必要があります。 上記のフレームワークには、それぞれメリットだけでなくデメリットもあり、良い悪いはなく、適しているということです。
この記事が気に入ったら、ぜひ一度Pythonをご活用ください。