序文
前回の記事では 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
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 の構成パラメーターを追加します。
デモ:
# 添加一个运行参数:--name
def 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)
登録したプラグインを呼び出す