1. ホーム
  2. python

[解決済み] pytestを使用してテストを無効にするにはどうすればよいですか?

2022-05-12 14:34:17

質問

たくさんのテストがあるとします。

def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...

を防ぐために、関数に追加できるデコレータのようなものはありますか? pytest がそのテストだけを実行するのを防ぐために、関数に追加できるデコレータまたは同様のものはありますか?結果は以下のような感じでしょうか。

@pytest.disable()
def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...

どのように解決するのですか?

Pytest には skip と skipif というデコレータがあり、Python の unittest モジュール (これは skipskipIf ) のドキュメントで見ることができます。 ここで .

リンク先からの例はこちらです。

@pytest.mark.skip(reason="no way of currently testing this")
def test_the_unknown():
    ...

import sys
@pytest.mark.skipif(sys.version_info < (3,3),
                    reason="requires python3.3")
def test_function():
    ...

最初の例は常にテストをスキップします。2番目の例は条件付きでテストをスキップすることができます(テストがプラットフォーム、実行可能なバージョン、またはオプションのライブラリに依存している場合に最適です。

例えば、あるテストのために誰かがライブラリpandasをインストールしているかどうかをチェックしたい場合。

import sys
try:
    import pandas as pd
except ImportError:
    pass

@pytest.mark.skipif('pandas' not in sys.modules,
                    reason="requires the Pandas library")
def test_pandas_function():
    ...