私はpytestを使って私のプロジェクトにテストスイートを開発しています。プロジェクトの性質上、テストの実行方法を制御するPytestプラグインを作成する必要があります。それらはローカルでは実行されませんが、実行するために別のプロセスに送信されます。 (私は約xdist
を知っているが、私はそれは私の問題を解決しないと思います。)Pytest plugin:pytest_runtest_callとfriendsをオーバーライドします
私は様々なpytest_runtest_*
メソッドをオーバーライドすることで自分のPytestプラグインを書いてきました。これまでは順調に進んでいます。ここで私が壁に当たったところです:私はpytest_runtest_setup
、pytest_runtest_call
とpytest_runtest_teardown
の実装を実際にセットアップ、コール、ティアダウンを担当することを望みます。彼らは別のプロセスでそれをやろうとしています。 私の問題はです。Pytestは私のpytest_runtest_setup
を呼び出した後、プラグインの行を他のすべてのpytest_runtest_setup
と呼んでいます。これは、pytest_runtest_setup
のフック指定がfirstresult=False
であるためです。
実際に現在のプロセスでpytest_runtest_setup
を実際に実行したくないため、私はこれをしたくありません。私はそれを私自身で実行する責任があります。私はを無効にしたいどのように実行されているのではなく、にを追加します。私はの他の実装を自分自身の下ににするのではなく、を実行します。
どうすればいいですか?
pytestで不明瞭な関数をmonkeypatchする必要があるようです。コードをちょっと見ようとしましたが、その関数が呼び出されたときに明白に見えませんでした。しかし、より洗練された、より互換性のあるソリューションがあるかもしれません。 – Hector
私は賞金の有効期限が切れる前に作業例を思いつく時間はありませんが、これを行うためのフックは次のように見えます:['pytest_runtest_protocol'](http://doc.pytest.org/en/latest/ writing_plugins.html#_pytest.hookspec.pytest_runtest_protocol) –