[スイッチ]比較---- unittestの、pytest、鼻、ロボットフレームワーク比較テストフレームワークのPython

次のいくつかの比較枠組みを見つけるための物理的な接触のフレームワーク、特にインターネットでいくつかのテスト自身、個人はまだpytestを使用することをお勧めします。
テストフレームワーク

フレームワークとは何ですか?

フレームワーク(枠組み)または全体のシステム設計の再使用可能な部分は、
フレームは、組織及び操作コード制御の問題を解決するために使用されます。

私たちは自動化されたスクリプトを書くときは、頻繁には、データファイル、送信要求、ロギング、データベース接続を読み込み、データを比較し、設定ファイルを読み込む必要があります。各スクリプトは、すべての様々な方法を書き換え重いワークロードとエラーが発生しやすいだけではありません。だから我々は、バッグの中に独立したモジュールとしてパッケージ化され、公開、一般的な方法を抽出する方法を必要としています。また、設定ファイルなどのデータファイル、ログは、我々はまた、別のフォルダに分類維持する必要があります。このスクリプトと構成ファイルのパッケージ、そしてどのようなフレームワークと呼ばれるパブリックメソッドの機関設計。

一方、一般的なフレームワークだけでなく、に加えて、組織コードとコンフィギュレーションファイル外の操作の完全な制御を提供します。例えば、バッチ実行、一部の実行モジュールは、レポート、例外処理などを発生させます。

次の3点に要約さ:

  • パブリックメソッドパッケージ
  • 組織コードとコンフィギュレーションファイル
  • 実行制御

テストフレームワークとは何ですか?

完全なテストスクリプト(ユースケース)は、一般的に以下の工程を含みます:

  • 環境準備やチェック
  • 業務執行
  • アサーション結果
  • 環境のクリーンアップ

通常、ローディングケースによって達成テストフレーム、バッチ実行、異常な制御と出力機能の結果。ベースのテストフレームワークは、一般的な業務執行機能の制御を提供します。

テストフレームワークは、特性を持っている必要があります

  • 使いやすさ:書き込みユースケース、ユースケースの実行、レポート作成や簡単な位置決め問題
  • 堅牢性:安定した、そのようなタイムアウトメカニズムとして
  • スケーラビリティ:プラグイン
  • 柔軟性:柔軟性組織またはケースを用いて行わ、器具の機能(およびティアダウン、セットアップの異なる範囲)、等
  • カスタマイズ:便利な二次開発

ユニットテスト、pytest、鼻、ロボットフレームワーク简介

  • unittestのは:Pythonは、最も基本的なユニットテストフレームワークが来ます
  • 鼻:unittestのベースの開発、使いやすさが良いですが、多くのプラグインがあります
  • pytest:ユニットテストにも基づいて開発、使いやすさは、良好な、より詳細な情報、プラグインの数であります
  • ロボットのフレームワーク:Python言語に基づいて、キーワード駆動型テストフレームワーク、インタフェースがあり、完全に機能する、自己報告とクリアで美しいログイン
プロジェクト 単体テスト pytest ロボットのフレームワーク
書かれたケース 継承たunittest.TestCaseクラスがアサーションテストスイートの広い範囲を整理する必要があります 試験方法の先頭に これは、試験方法の始まりです ロボットは、テキストファイルをフォーマットすることができます
アクチュエータ あなた自身のrun_all_tests +は+ CommandParser +を発見書きます... nosetests ... py.test ... pybot ...
彼らは発見していました。 サポート サポート サポート サポート
スキップユースケース unittest.skip()unittest.skipIf()昇給uniitest.SkipTest nose.plugins.skip輸入SkipTestraise SkipTestから @ pytest.mark.skipif(条件)@ pytest.mark.xfail -
備品 SETUP /ティアダウン@ classmethodsetUpClass ... サポート Pytest.fixture(セッション= "セッション"、autouse =真)フィクスチャスコープ:@関数、モジュール、セッション、autouse = Trueの機能が実行をデフォルトになります [設定] ... [ティアダウン] ...
タグ付きの例タグ (unittest.skip付き)+ comandParser達成 ATTRIB标签)nose.plugins.attribインポートからのattr @ ATTR(速度= '遅い')DEF test_big_download(:遅い= $ nosetests -aスピードを渡します Pytest.mark.webtest @カスタムマーク、次のように、とWebTestの、py.test -v -mの後、py.test -v -m WebTestの実行マークが唯一の機能「ではないWebTestの」無印WebTestのを実行します 【タグ】試験level1pybot -i / - tagNameをCを含む:\ TF-Testpybot -e / - exculde LEVEL1 * .robot排除
タイムアウトタイムアウトメカニズム 自分自身を達成するために nose.tools  インポートtimedimport時間@タイミング(1)DEF test_lean_5():time.sleep(2)パス PIPインストール[email protected](60)或pytest --timeout = 300 [タイムアウト] 3秒
パラメータ化 DDTの使用と組み合わせ DDTの使用と組み合わせ @ pytest.mark.parametrize( "A、B、期待される"、テストデータ)デフtest_timedistance_v0(、bは、予想):差分= - 予想bassertデフ== [テンプレート] 1 2 3
レポート HTMLTestRunner ピップ鼻htmloutputインストール - --html-ファイル・HTMLでの= ピップ-U pytest-htmlpy.test --html =。/ report.htmlをインストール サポート、デフォルトの自動生成
ログログ 自分自身を達成するために --nologcaptureログを使用しない - ログ形式= FORMAT使用カスタム表示形式ログ--logging-datefmt =上記FORMAT同様のクラス、複数の日付フォーマットは--loggingフィルタFILTER =ログフィルタを、通常使用されていません、あなたは--loggingクリア・ハンドラに焦点を当てることができないでレベル定義--loggingレベル= DEFAULTログを心配することはできません pytest test_add.py --resultlog =。/ log.txtpytest test_add.py --pastebin =すべて サポート、デフォルトの自動生成
例としては、唯一の収集のみ記載されています ノー nosetests --collect-onlynosetests -v --with-ID --collect専用-v -
重量例が運営する再実行の失敗を失敗しました ノー nosetests -v --failed PIPインストール-U [email protected](再放送= 5)py.test --rerun = 3 ロボット--rerunfailed
ベースラインの比較 ノー ノー ノー ノー
によって複雑 unittestの同時コルーチンを用いた形質転換、またはスレッドプール+美しいレポートを使用します 同時コマンドライン pytest-xdist:未使用のCPUまたはマシンを配布します 同時コマンドライン
XMLレポート ノー --with-のxUnit --xunitファイル= ... / pytest +アリュール --junit-XML =
Seleniumのサポート ノー ノー pytest - セレン robotframework-seleniumlibraryrobotframwork-selenium2library

概要:全体的に、比較のunittestの基礎、便利で専門家の使用に適しての二次開発; pytest /鼻より速く、より便利に、より効率的、かつ企業の効率性の追求のための白、ロボットフレームワークによるインターフェースやレポートの外観に、簡単により良い使用、わずかに悪化柔軟性とカスタマイズ性。

おすすめ

転載: www.cnblogs.com/helloTerry1987/p/12573711.html