pytestを使用して、組み込みシステム用のPythonモデルをテストしています。テスト対象の機能はプラットフォームによって異なります。 (私は、この文脈ではOSタイプではなく組み込みシステムタイプを意味するために 'プラットフォーム'を使用しています)。pytestは「デフォルト」マーカーをサポートしていますか?
テストを整理する最も簡単な方法は、プラットフォームタイプに基づいてディレクトリに割り当てることです。これはすぐにできるだけ多くの機能をサポートするのは難しいとなった
/platform1
/platform2
/etc.
pytest /プラットフォーム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「(プラットフォーム1またはall_platforms)」
質問:(!最終的には)
物事を単純化し、デフォルトですべてのマークされていないテストや合格加えて、すべてのテストを実行pytest持ってする方法はありますコマンドラインで '-m'を介して?例えば
: pytest -m「プラットフォーム1」
は、テストを実行しますがpytest.mark.platform1 @マークだけでなく、すべてのテストがpytest.mark.all_platformsあるいは全くの@ pytest.markでも、すべてのテスト@マーク全く?
共有機能が大量であるため、@ pytest.mark.all_platforms行を削除できれば大きな助けになります。
チャームのように働いた。ありがとうHolger。 –
他の人が知っているので、この回答のソースはhttps://pytest.org/latest/example/markers.html#marking-platform-specific-tests-with-pytestから入手できます。 –