学習は test ape の永遠の原動力です。超詳細なpytestフック関数の初期フックとブートフックはこちら

序文

前回の記事では pytest ポイントの基本的な使い方を紹介しましたが、前回の記事の内容を学べば、仕事でユースケースを書いたり自動テストを実行したりするニーズには基本的に対応できます。今回からはpytestにおけるフック機能やプラグイン開発などについて紹介していきます。pytest のドキュメントを注意深く読んだ友人なら、pytest フレームワークが多くのフックを提供していることがわかるはずです。これらのフックを通じて、pytest ユース ケースの収集、ユース ケースの実行、レポート出力などのさまざまな段階に介入し、独自の使用シナリオを満たす要件に応じて対応するプラグインを開発できます。pytestが提供するフック関数は非常に多いため、数回の記事に分けて紹介していきます。この記事では主にpytestのブートフックと初期化フックを紹介します。

1.フック関数とは

フック関数は、ユーザーが開発用に予約されているいくつかの関数をより適切に拡張できるようにするために、pytest フレームワークの開発者である pytest のフック関数と呼ばれます。これらの予約された関数は、テスト実行ライフサイクル全体の特定の段階で自動的に呼び出され、実行されます。以下に示すように:

写真

pytest の予約済みフックについては、プラグインを開発し、conftest.py でこれらのフックを実装できます。各フック関数は複数のプラグインで実装でき、各フックと実行される関数の比率は 1:N です。

pytestのフック関数は機能に応じてブートフック、初期化フック、ユースケース収集フック、ユースケース実行フック、レポートフック、デバッグフックの6つに分類されますが、本記事ではブートフックと初期化フックを中心に紹介します。

2. ガイドフック

ブートストラップ フックは、コマンドを解析し、プラグイン (内部ツールとセットアップ ツールの両方) を登録するのに十分早い段階で呼び出されます。

1、pytest_load_initial_conftests

パラメータ:
  • early_config: pytest 構成オブジェクト。

  • args: コマンドラインで渡される引数。

  • parser: コマンドラインに追加されたオプション。

トリガータイミング

  • コマンドラインで pytest を介してコマンドが実行されると、フック関数が最初に実行されます。

デフォルトの効果:

  • conftest.py ファイルをロードします

注意点:

  • フック関数はプラグインで定義されている場合にのみ呼び出され、conftest で定義されている場合は呼び出されません。

インターフェイス自動テストを学習したい場合は、ここで一連のビデオをお勧めします。このビデオは、ステーション B のネットワーク全体でナンバー 1 のインターフェイス自動テスト チュートリアルであると言えます。ユーザーが 1,000 人に達し、収集して使用するメモがあります。各種マスターの技術交流: 798478386      

【更新】B局が教えるPythonインターフェースの自動テストの最も詳しい実践チュートリアル集(実戦最新版)_哔哩哔哩_bilibili 【更新】Pythonの自動テストの最も詳細な実践チュートリアル集B局が教えるインターフェース(実戦編) 最新版)には以下の動画が合計200本あります: 1. 【インターフェース自動化】ソフトウェアテストの市場状況とテスターの能力基準。, 2. [インターフェイスの自動化] Requests ライブラリとその基礎となるメソッド呼び出しロジックに精通した、3. [インターフェイスの自動化] インターフェイスの自動化戦闘と正規表現と JsonPath エクストラクターの適用など。さらにエキサイティングなビデオについては、注目してください。 UPアカウント。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337 

2、pytest_cmdline_main

**トリガタイミング:**メインコマンド実行後に実行

デフォルトの効果:
  • コマンドを呼び出してフックを解析し pytest_cmdline_parse 、runtest_mainloop を実行します。

パラメータ
  • config: pytest 設定オブジェクト

3、pytest_cmdline_parse

パラメータ
  • args: コマンドラインで渡される引数。

  • pluginmanager : プラグインマネージャー

デフォルトの効果:
  • 構成オブジェクトを初期化し、指定されたパラメータを解析するために使用されます。

注意点:
  • フック関数はプラグインで定義されている場合にのみ呼び出され、conftest で定義されている場合は呼び出されません。

3. 初期化フック

初期化フックは、プラグインと conftest.py ファイルの初期化を呼び出すために使用されます。

1、pytest_addoption

パラメータ
  • パーサー : パラメータパーサー

  • pluginmanager : プラグインマネージャー

トリガータイミング
  • conftest ファイルがロードされた後、テスト実行の開始時に 1 回実行されます。

効果:
  • コマンドを実行するためのコマンド ライン パラメーター、pytest.ini の構成パラメーターを追加します。

デモ:
# 添加一个运行参数:--namedef pytest_addoption(parser,pluginmanager ):  parser.addoption(     "--name",     action="store",     dest="name",     default="World",     help='参数的帮助提示信息', )   # 添加一个ini文件的配置项def pytest_addoption(parser,pluginmanager ):  parser.addini(     "name",     help='参数的帮助提示信息',     type="string",     default="musen", )

2、pytest_configure

パラメータ
  • config: pytest 設定オブジェクト

トリガータイミング:
  • このフックは、コマンド ライン オプションを解析した後、すべてのプラグインと最初の conftest ファイルによって呼び出されます。

  • このフックは、他の conftest ファイルをインポートするときに呼び出されます。

デフォルトの効果:
  • プラグインと conftest ファイルが初期設定を実行できるようにします。

3、pytest_unconfigure

パラメータ
  • config: pytest 設定オブジェクト

トリガータイミング:
  • テストプロセスを終了する前に呼び出されます

4、pytest_sessionstart

パラメータ
  • セッション: pytest セッション オブジェクト

トリガータイミング:
  • Session オブジェクトの作成後、コレクション テスト ケースの実行前に呼び出されます。

5、pytest_sessionfinish

パラメータ
  • セッション: pytest セッション オブジェクト

  • exitstatus: pytest はシステムのステータスを返します

トリガータイミング:
  • テスト実行全体が完了した後、終了ステータスをシステムに返す直前に呼び出されます。

6、pytest_plugin_registered

パラメータ
  • plugin : プラグインモジュールまたはインスタンス

  • マネージャー : pytest プラグインマネージャー

効果:
  • 新しいプラグインを登録する

7、pytest_addhooks

パラメータ
  • pluginmanager : プラグインマネージャー

トリガータイミング:
  • プラグインの登録時に呼び出され、フック関数を実行リストに追加します

デフォルトの効果:
  • pluginmanager.add_hookspecs(module_or_class, prefix) 登録したプラグインを呼び出す 

 

おすすめ

転載: blog.csdn.net/caixiangting/article/details/132170760