2023 年の自動テスト向け Python フレームワーク トップ 5

Pythonは2018年にプログラミング言語に選ばれて以来、常に主要ランキングの上位に位置しています。現在、Tiobe Index では Java と C に次いで 3 位にランクされています。このプログラミング言語の普及に伴い、Python ベースの自動テスト フレームワークも登場し、開発と充実が続けられています。

したがって、開発者とテスターは、当面のプロジェクトのテスト フレームワークを選択する際に、フレームワークのスクリプト品質、テスト ケースの単純さ、実行中のモジュールの技術的弱点の可能性など、多くの要素を考慮する必要があります。「選択の難しさ」を避けるために、Python系の自動テストフレームワークを5種類用意して比較検討してみました。

目次

1.ロボットフレームワーク

2.パイテスト

3.UnitTest/PyUnit

4.行動する

5.レタス

エピローグ

1.ロボットフレームワーク

最も重要な Python テスト フレームワークの 1 つとして、ロボット フレームワークは主にテスト駆動の開発と受け入れに使用されます。Python で開発されていますが、.Net ベースの IronPython および Java ベースの Jython でも実行できます。同時に、Robot は Python フレームワークとして、Windows、MacOS、Linux などのプラットフォームと互換性があります。

前提条件を使用する

Robot Framework(RF)を使用する前に、Python 2.7.14以降をインストールする必要があります。コードセグメントに適切なコメントが追加されていることを確認し、プログラムの変更を追跡するには、Python 3.6.4 を使用することをお勧めします。同時に、Python パッケージ マネージャー --pip もインストールする必要があります。

もちろん、対応する開発フレームワーク (例: PyCharm Community Edition) もダウンロードする必要があります。これは、開発者の間でより人気があります。さらに、コード スニペット自体は IDE に依存しないため、既存の IDE ツールを完全に使用できます。

アドバンテージ

  • キーワード駆動テスト手法を使用すると、テスターが読みやすいテスト ケースを簡単に作成できるようになり、自動化プロセス全体が簡素化されます。

  • ユーザーはデータ内の構文を簡単にテストできます。

  • さまざまな共通ツールとテスト ライブラリで構成されているため、大きなエコシステムを備えているだけでなく、その個々の要素を別のプロジェクトで使用することもできます。

  • フレームワークには多くの種類の API があるため、拡張性が高くなります。

  • 組み込み機能ではありませんが、Robot は online-selenium-grid-for-automated-cross-browser-testing/) と連携して、ユーザーがさまざまな並列テストを実行できるようにします。

欠点がある

上記の便利さにもかかわらず、Robot Framework はカスタム HTML レポートを作成するのが面倒です。最大でも、xUnit 形式で短いレポートを生成するために使用できます。

また、Robot Framework は並列テストが苦手です。

競合製品と比較したロボットの特長

Robot には豊富な組み込みライブラリがあり、よりシンプルなテスト指向の DSL (Domain Specific Language) を使用できるため、自動テストの分野に慣れておらず、開発経験が不足している場合は、Python テスト フレームワークとして使用することをお勧めします。以下で説明する Pytest や Pyunit よりも簡単に始めることができます。もちろん、複雑な自動化フレームワークを開発する必要がある場合は、Pytest または他の種類の Python フレームワークを使用してください。

2.パイテスト

Pytest もさまざまなソフトウェア テストに適しており、Python タイプの自動テスト フレームワークです。このツールはオープンソースであり、学習しやすい機能を備えているため、QA (品質分析) チーム、開発チーム、個人チーム、およびさまざまなオープンソース プロジェクトによってよく使用されます。Pytestには「アサート書き換え(アサート書き換え)」などの実用的な機能があるため、DropboxやMozillaなど多くの大手インターネットアプリケーションが後述のunittest(Pyunit)からPytestに移行しています。

前提条件を使用する

基本的な Python の知識を除けば、ユーザーはそれ以上の技術的な予備知識を必要としません。さらに、ユーザーはコマンド ライン インターフェイスを備えたテスト デバイスを用意し、開発用の Python パッケージ マネージャーと IDE ツールをインストールするだけで済みます。

アドバンテージ

  • 以前は、開発者はテストをさまざまな大きなクラスでラップする必要がありました。現在、Pytest を使用すると、ユーザーはよりコンパクトなテスト スイートを作成できます。

  • 他のテスト ツールでは、開発者またはテスターがデバッガーを使用するか、ログ検査を使用して特定の値のソースを検出する必要があります。ユーザーが Pytest を使用してテスト ケースを作成する場合、どの値が失敗し、どの値がアサートされたかを知るまで、すべての値をテスト ケースに保存できます。

  • ボイラープレート コードがあまり含まれていないため、ユーザーはさまざまなテストを簡単に作成して理解できます。

  • テスト フィクスチャ (Fixture) 関数は、テスト関数にパラメータを追加し、別の値を返すためによく使用されます。pytest では、1 つのフィクスチャを別のフィクスチャを使用してモジュール化できます。同時に、ユーザーはテストケースを書き直すことなく、複数のフィクスチャを使用してパラメータのすべての組み合わせをカバーできます。

  • pytest 開発者は、さまざまなユーティリティ プラグインをリリースすることで、フレームワークの拡張性を維持しています。例: pytest-xdist を使用すると、他のテスターを使用せずに並列テストを実行できます。同時に、コードを複製せずに単体テストをパラメータ化することもできます。

  • 開発者にさまざまな特別なルーチンを提供することで、テスト ケースの作成が容易になり、エラーが発生しにくくなり、コードが短くなり、理解しやすくなります。

欠点がある

上記の特別なルーチンは、ユーザーが特定の互換性を放棄しなければならないことも意味します。ユーザーにとってテスト ケースを作成すると便利ですが、これらのユース ケースは他のテスト フレームワークでは使用できません。

pytestの特徴を競合製品と比較

機能テスト ケースの作成と複雑なフレームワークの開発という点では、Pytest は後述する UnitTest よりも優れています。ただし、これはロボット フレームワークに似ており、単純なテスト フレームワークの開発にのみ適しています。

Pytest の使用を検討している場合は、「Pytest と Selenium WebDriver によるテスト自動化」を参照してください。

3.UnitTest/PyUnit

JUnit からインスピレーションを得た UnitTest/PyUnit も、単体テスト用の標準化された Python に似た自動テスト フレームワークです。その基本クラス TestCase は、さまざまなアサーション メソッドと、すべてのクリーンアップおよびセットアップ ルーチンを提供します。したがって、TestCase サブクラスのすべてのメソッドには、テスト ケースとして実行できることを示すために「test」という接頭辞が付けられます。ユーザーは、load メソッドと TestSuite クラスを使用して、さまざまなテストをグループ化して読み込むことができます。

もちろん、これらを組み合わせてカスタム テスト ランナーを構築することもできます。Junit を使用して Selenium をテストするのと同じように、UnitTest も UnitTest-sml-reporting を使用し、さまざまな XML タイプのレポートを生成できます。

前提条件を使用する

UnitTest はデフォルトで Python を使用するため、前提条件は必要ありません。Python フレームワークの基本的な知識に加えて、開発用に pip および IDE ツールを追加でインストールすることもできます。

アドバンテージ

  • 開発者は他のモジュールをインストールする必要はありません。

  • UnitTest は xUnit から派生したもので、その動作原理は他の xUnit フレームワークと非常に似ています。そのため、Python に関する十分な知識がない人でも、すぐに始めることができます。

  • ユーザーは、より簡単な方法で個々のテスト ケースを実行できます。端末上で名前を事前注文するだけで、フレームワークがさまざまなユースケースのテストを柔軟に実行し、洗練された出力を生成します。

  • さまざまなテストレポートをミリ秒以内に生成できます。

欠点がある

このフレームワークは一般に、さまざまな Python コードに名前を付けるために Snake_case を使用しますが、これは Junit から派生しているため、伝統的な CamelCase の命名方法がいくつか残されています。これは混乱を招く傾向があります。

サポートする抽象メソッドが多すぎるため、テスト コードの目的が不明瞭になる場合があります。多くの定型コードが必要です。

競合製品と比較したPyUnitの特徴

一部の Python 開発者の意見と同様に、私は次のように考えています。Pytest は、非常にコンパクトな方法でより良い自動化コードを書くためのテスターのプログラミング習慣を養うことができます。UnitTest は Python のデフォルトの自動テスト フレームワークですが、その動作原理と命名規則は標準の Python コードとは若干異なります。同時に、あまりにも多くの定型コードも必要になります。したがって、このフレームワークはあまり普及していません。

4.行動する

誰もが知っているように、動作駆動開発 (動作駆動開発、BDD) は、アジャイル ソフトウェア開発に基づいた手法です。これにより、開発者、ビジネス関係者、QA 担当者の間のコラボレーションが促進されます。もう 1 つの Python テスト フレームワークである Behave を使用すると、チームはさまざまな複雑な状況を回避して BDD テストを実行できます。基本的に、このフレームワークは SpecFlow や Cucumber に非常に似ており、自動テストの実行によく使用されます。ユーザーは、実行中にコードに貼り付けることができるテスト ケースを読みやすい言語で作成できます。さらに、設定された行動規範とステップは、他のテスト ソリューションで再利用することもできます。

前提条件を使用する

Python の基本的な知識があれば誰でも Behave を使用できます。その他の前提条件は次のとおりです。

まず Python 2.7.14 以降をインストールする必要があります。

Behave を使用するには、Python パッケージ マネージャーまたは pip が必要です。

ほとんどの開発者は開発環境として Pycharm を選択しますが、もちろん他の IDE ツールを選択することもできます。

アドバンテージ

  • Behave は、システムが準形式的な言語とドメイン語彙を使用して動作するため、組織全体で一貫した動作を維持するのに役立ちます。

  • 異なるモジュールに取り組んでいる開発チームが、調整された処理を通じて同様の特性を持たせるようにします。

  • 構築される個々の機能ブロックは、さまざまなテスト ケースを実行できます。

  • ユーザーの推論や思考に値する詳細がより多く含まれるため、対象製品の仕様が向上します。

  • 同様の仕様フォーマットに基づいているため、プロジェクト マネージャーと関係者は、開発チームと QA チームの出力をより明確に理解できるようになります。

欠点がある

ブラックボックステストにのみ適しています。

競合製品と比較した Behave の機能

Behave は、単純な Web テストなどのブラック ボックス テストに最適です。ただし、Behave は、複雑なシナリオを含む統合テストや単体テストには適していません。Behave の代替として、一部の開発者やテスターは pytest-bdd を推奨します。このツールは、Pytest のすべての利点を組み合わせて、さまざまな動作駆動型のテスト シナリオを実装します。

Behave の使用を検討している場合は、Behave with Selenium を借用できます (https://www.lambdatest.com/support/docs/display/TD/Behave+with+Selenium+-+Running+Behave+Automation+ Scripts+on+LambdaTest を参照) +セレン+グリッド)。

5.レタス

Lettuce は、Cucumber と Python をベースにしたもう 1 つの動作駆動型自動化ツールです。レタスは主に、動作駆動型開発の特徴である日常的なタスクに焦点を当てています。使いやすいだけでなく、テストプロセス全体がよりスムーズになり、さらに楽しくなります。

前提条件を使用する

IDE とともに Python 2.7.14 以降をインストールする必要があります。もちろん、Pycharm やその他の IDE ツールを使用することもできます。同時に、Python パッケージ マネージャーもインストールする必要があります。

アドバンテージ

  • 他の BDD テスト フレームワークと同様に、Lettuce を使用すると、開発者は複数のシナリオを作成し、さまざまな機能を単純な自然言語で記述することができます。

  • 同様の仕様フォーマットに基づいて、開発チームと QA チームは調整して協力することができます。

  • ブラックボックス テストの場合、Lettuce は動作駆動型のテスト ケースに非常に適しています。

欠点がある

動作駆動テストを正常に実装するには、開発チーム、QA スタッフ、関係者の間で継続的なコミュニケーションが必要です。このようなコミュニケーションが欠けていると、プロセスがあいまいになり、チームに問題が生じる可能性があります。競合他社との比較

平均的な開発者や自動化テスト担当者の意見では、BDD テストを実行するには Cucumber の方が実用的です。Python 開発者と QA 担当者の目には、Pytest-bdd が最適です。pytest の強みは、そのフレームワークによりコンパクトで理解しやすいコードを実現し、動作駆動型のテストに緊密に統合できることです。

エピローグ

要約すると、上記 5 つの自動テスト Python フレームワークのうち、Pytest、Robot Framework、UnitTest は主に機能テストと単体テストに使用できますが、Lettuce と Behave は動作駆動型テストにのみ適しています。さらに比較してみると、機能テストには Pytest が最適であると考えられます。Python ベースの自動テストを初めて使用する場合は、Robot Framework が最適なツールです。機能は限られていますが、使い方はとても簡単です。Python ベースの BDD テストの場合、Lettuce と Behave は同様に優れています。ただし、すでに Pytest の使用経験がある場合は、Pytest-bdd を使用してください。この記事が、適切な Python テスト フレームワークを選択し、テスト作業をスムーズに実行するのに役立つことを願っています。

記事が役に立った場合は、「いいね」を付けたり、ブックマークしたり、注目を追加してください。たまには乾物も紹介しますね~

終了 学習リソースの共有のサポート

最後に: 熱心なファンに恩返しするために、完全なソフトウェア テスト ビデオ学習チュートリアルを作成しました。必要な場合は、無料で入手できます。 【保证100%免费】

加入我的软件测试交流qq群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

ソフトウェアテストの面接ドキュメント

私たちは高給の仕事を見つけるために勉強しなければなりません。次の面接の質問は、アリ、テンセント、バイトなどの一流インターネット企業からの最新の面接資料であり、一部のバイトの上司が権威ある回答をしています。このセットを完了してください。面接資料は次のとおりです。誰もが満足のいく仕事を見つけることができると信じています。

è¿éæå¥å¾çæè¿°

完全な情報セットを入手する方法:

è¿éæå¥å¾çæè¿°

おすすめ

転載: blog.csdn.net/myh919/article/details/131483336