2017-12-07 13 views
1

py.testでテストのリスト(約5項目)を除外したいと思います。py.testのテストリストをコマンドラインで除外しますか?

このリストをpy.testにコマンドラインで伝えたいと思います。

ソースを変更しないようにしたいと思います。

どうすればよいですか?

あなたは、これが conftest.pyファイル作成することにより、仕事を得ることができ
+0

あなたはargparseを使用してみましたか? – IMCoins

+0

私の文脈で@IMCoins py.testはコマンドラインツールです。私はこの文脈ではpythonソースを変更することはできません。 argparseはPythonライブラリなので、ここでは役に立たないと思います。 – guettli

答えて

4

を参照してください、オプションが-kです。

def test_spam(): 
    pass 

def test_ham(): 
    pass 

def test_eggs(): 
    pass 

ボークpytest:あなたは次のテストがある場合は

pytest -v -k 'not spam and not ham' tests.py 

を、あなたが取得します:

collected 3 items 

pytest_skip_tests.py::test_eggs PASSED    [100%] 

=================== 2 tests deselected =================== 
========= 1 passed, 2 deselected in 0.01 seconds ========= 
+0

ニース、私は今日何かを学んだ! –

+0

はい、これは動作します。この答えをありがとう。 – guettli

2

# content of conftest.py 

import pytest 
def pytest_addoption(parser): 
    parser.addoption("--skiplist", action="store_true", 
        default="", help="skip listed tests") 

def pytest_collection_modifyitems(config, items): 
    tests_to_skip = config.getoption("--skiplist") 
    if not tests_to_skip: 
     # --skiplist not given in cli, therefore move on 
     return 
    skip_listed = pytest.mark.skip(reason="included in --skiplist") 
    for item in items: 
     if item.name in tests_to_skip: 
      item.add_marker(skip_listed) 

あなたがでそれを使用する:あなたは、常に同じテストをスキップする場合は、リストを定義できること

$ pytest --skiplist test1 test2 

注意をconftest

あなたはtests selecting expressionを使用することができますもthis useful link

+0

あなたの答えをありがとう。 – guettli

関連する問題