たくさんのテストがあるとしましょう:
def test_func_one():
...
def test_func_two():
...
def test_func_three():
...
Py.testがそのテストだけを実行するのを防ぐために、関数に追加できるデコレータなどがありますか?結果は次のようになります...
@pytest.disable()
def test_func_one():
...
def test_func_two():
...
def test_func_three():
...
Py.testのドキュメントでこのようなものを検索しましたが、ここで何かが足りないかもしれません。
Pytestにはskipおよびskipifデコレーターがあり、Python unittestモジュール(skip
およびskipIf
を使用)に似ています。これらはドキュメントにあります here =。
リンクの例はここにあります:
@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():
...
skip
デコレータ が仕事をします:
@pytest.mark.skip(reason="no way of currently testing this")
def test_func_one():
# ...
(reason
引数はオプションですが、テストをスキップする理由を指定することを常にお勧めします)。
skipif()
もあり、特定の条件が満たされた場合にテストを無効にできます。
これらのデコレータは、メソッド、関数、またはクラスに適用できます。
モジュール内のすべてのテストをスキップする にするには、グローバルpytestmark
変数を定義します。
# test_module.py
pytestmark = pytest.mark.skipif(...)
減価償却されているかどうかはわかりませんが、テスト内でpytest.skip
関数を使用することもできます。
def test_valid_counting_number():
number = random.randint(1,5)
if number == 5:
pytest.skip('Five is right out')
assert number <= 3
テストが失敗すると疑われる場合でも、テストを実行することもできます。そのようなシナリオの場合 https://docs.pytest.org/en/latest/skipping.html はデコレーターの使用を提案します@ pytest.mark.xfail
@pytest.mark.xfail
def test_function():
...
この場合、Pytestは引き続きテストを実行し、合格または今すぐにテストを実行しますが、文句を言わずビルドを中断しません。