2017-02-16 16 views
2

私はpytestに渡すtestfixturesのテストを取得しようとしているが、それはテストされないものを収集しようとし続ける:unittestをサブクラス化しないTest *クラスをpytestで無視させる方法はありますか?

======================================================= pytest-warning summary ======================================================== 
WC1 /Users/chris/vcs/git/testfixtures/testfixtures/tests/test_comparison.py cannot collect test class 'TestClassA' because it has a __init__ constructor 
WC1 /Users/chris/vcs/git/testfixtures/testfixtures/tests/test_components.py cannot collect test class 'TestComponents' because it has a __init__ constructor 
WC1 /Users/chris/vcs/git/testfixtures/testfixtures/tests/test_datetime.py cannot collect test class 'TestTZInfo' because it has a __new__ constructor 
WC1 /Users/chris/vcs/git/testfixtures/testfixtures/tests/test_datetime.py cannot collect test class 'TestTZ2Info' because it has a __new__ constructor 
cannot collect test class 'TestContainer' because it has a __init__ constructor 
cannot collect test class 'TestTZInfo' because it has a __new__ constructor 

は、どのように私はユニットテストをサブクラステスト*クラスを収集するためにpytest得ることができます。テストケース?

答えて

0

Pytestはテストを収集するためにグロブスタイルの名前パターンを使用し、設定ファイル内のpython_files,python_classes、およびpython_functionsというオプションでディスカバリをカスタマイズできます。

私はデフォルトではこのようなものだと思います

[pytest] 
python_files=test_*.py 
python_classes=Test* 
python_functions=test_* 

おそらく、あなたはちょうどそれをオーバーライドすることで、クラスを収集することではない、それをカスタマイズすることができます:

# pytest.ini (or in tox.ini, or in setup.cfg) 
[pytest] # if using setup.cfg, this section name should instead be [tool:pytest] 
python_classes=NoThanks 

注:それは一つに限られるものではないですがここでパターンを指定すると、それらのリストを指定できます。

このオプションに関係なく、unittest.TestCaseを継承するクラスは引き続き収集する必要があります。これは、unittestフレームワーク自体がこれらのテストを収集するために使用されるためです。

1

私はPytest 2.6 release notesで、この発見:unittestのスタイルクラスを含むモジュール、クラスや関数の

サポート鼻スタイル__test__属性を、。 Falseに設定すると、テストは収集されません。

これは、あなたがそれになりたくないが、それは警告「それは__init__コンストラクタを持っているので、テストクラスを収集することはできません」と助けていない場合、あなたのクラスが収集されている場合に役立ちます。

+0

これは、unittest.TestCaseをサブクラス化しないクラスのpytestのリリース版では機能しません –

関連する問題