組み込みシステムのPythonモデルをテストするためにpytestを使用しています。テストする機能はプラットフォームによって異なります。(このコンテキストでは、OSタイプではなく、組み込みシステムタイプを意味するために「プラットフォーム」を使用しています)。
テストを整理する最も簡単な方法は、プラットフォームの種類に基づいてテストをディレクトリに割り当てることです。
/platform1
/platform2
/etc.
pytest / platform1
多くの機能がプラットフォーム間で重複しているため、これはすぐにサポートが困難になりました。その後、テストを1つのディレクトリに移動し、各機能領域のテストを1つのファイル名(たとえば、test_functionalityA.py)に割り当てました。次に、pytestマーカーを使用して、ファイル内のどのテストが特定のプラットフォームに適用されるかを示します。
@pytest.mark.all_platforms
def test_some_functionalityA1():
...
@pytest.mark.platform1
@pytest.mark.platform2
def test_some_functionlityA2():
...
プラットフォームタイプを自動的に検出して適切なテストのみを実行するために「 conftest 」を取得したいのですが、コマンドラインで実行するテストを指定することに辞任しました。
pytest -m "(platform1またはall_platforms)"
質問:(ついに!)
物事を単純化し、pytestにデフォルトですべてのマークされていないテストを実行させ、さらにコマンドラインの「-m」を介してすべてのテストに合格させる方法はありますか?
例:pytest -m "platform1"
@ pytest.mark.platform1とマークされたテストだけでなく、@ pytest.mark.all_platformsとマークされたすべてのテスト、または@ pytest.markがまったくないすべてのテストを実行しますか?
共有機能が大量にあることを考えると、@pytest.mark.all_platforms行を削除できることは大きな助けになります。