問題タブ [python-coverage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - オブジェクトを指定して、実行時に呼び出されるバインドされたメソッドのリストを取得する方法
質問は次のシナリオから来ています。
pytest に基づいて、プロジェクトのノースバウンド API をテストするためのフレームワークを構築しました。そして今、私たちが持っているテスト スクリプトを実行することによって、いくつの API がテストされた (基本的には呼び出された) かについてのカバレッジ レポートが必要です。
すべての API を Python メソッドとして作成する、明確に定義されたクライアント マネージャーが既にあります。たとえば、API があるとすると、実際のリクエストをサーバーに送信GET /user
するメソッドがあります。get_user
現在、コード カバレッジのレポートを提供する python-coverage (実際には pytest-cov ですが、同じものです) を使用しています。これに基づいて、呼び出された API の数について何らかの概念が得られます。しかし、それは正確でも明確でもありません。
したがって、重要な問題は、実行時に呼び出されるバインドされたメソッドのリストを取得する方法があるかどうかです。
質問を説明するために例を挙げたいと思います。
2 つのテストを実行した後、最後の実行時に呼び出され、呼び出されなかったことget_user
を示すレポートを取得するにはどうすればよいですか。post_user
delete_user
考えられる解決策の 1 つは、coverage.py を使用してテストを実行すると、実行中の行番号とファイルに関する十分な情報が得られるため、そこから必要なものを分析できるかもしれません。
Client
別の考えられる解決策は、 I definedでどのメソッドが呼び出されたかを追跡することです。実際、すべてのAPIメソッドが共通のメソッドを呼び出す特定のケースで質問を解決しましたcall_api
. 私はinspect
in methodを使用しcall_api
、 sayget_user
は常に の呼び出し元であるため、メソッド名を取得できcall_api
ます。ただし、この解決策はこの特殊なケースでのみ機能し、一般的な解決策ではありません。
module も見ましたtrace
。これは私が望むものに近いように見えますが、残念ながら、tracer(Trace instance)
コマンドまたは関数を実行するには使用する必要があります。
最終的に達成したいことは次のとおりです。
python - ブランチ カバレッジ ファイルのマージ python
Python でマルチプロセッシング アプリケーションを使用しています。そして、テストを実行した後にカバレッジ レポートを取得しようとしています。カバレッジ レポートをマージしようとしていますが、一度に行うことができません。
以下は私が直面している問題です。2 つのテストで 4 つのカバレッジ ファイルが生成されました。コマンド「カバレッジ結合」を実行すると、次のエラーが表示されます。
カバレッジ ファイルをマージするには、「カバレッジ結合」コマンドを 4 回実行する必要があります。しかし、さらに多くのテストを追加する予定であり、レポートを組み合わせることがさらに難しくなります。
では、すべてのカバレッジ レポートを一度にまとめるにはどうすればよいでしょうか。
PS: 構成ファイルを次のように設定しました。
また、ライン カバレッジについて正しく結合されたレポートを取得できます。
編集:
これは、アプリケーションを実行してカバレッジを取得する方法です
上記のコマンドはアプリを 2 回実行し、4 つのカバレッジ ファイルを生成します。
次に、次のコマンドを実行して結果を結合します。