2016-12-21 13 views
2
import unittest 
import logging 

FORMAT = '%(asctime)-15s %(message)s' 
logging.basicConfig(format=FORMAT) 


log = logging.getLogger(__name__) 
log.root.setLevel(logging.DEBUG) 

class FixturesTest(unittest.TestCase): 

    def setUp(self): 
     log.info('starting setup') 
     self.fixture = range(1, 10) 
     log.warn('Hello world') 

    def tearDown(self): 
     log.info('starting teardown') 
     del self.fixture 
     log.info('Goodbye world') 

    def test_pass(self): 
     log.info('in test pass') 
     self.assertEqual(self.fixture, range(1, 10)) 
     log.error('Test world') 

    def test_fail(self): 
     log.info('in test fail') 
     log.error("let's fail a test") 
     assert(1==0) 

    def test_error(self): 
     log.info('in test error') 
     log.info("let's error a test") 
     d = [] 
     d[1] 

    if __name__ == '__main__': 
     unittest.main() 

py.testを使用して上記のコードを実行すると、test_errorテストメソッドがテストエラーではなくテストエラーとしてレポートされます。 unittestを使用して実行すると、test_errorが失敗ではなくエラーとして表示されますが、これについて何か考えを共有できますか?py.testエラーの代わりに失敗としてIndexError/KeyErrorを報告します

更新:同じコードで、noseもtest_errorの代わりにエラーとみなします。これはpy.testの問題ですか?

更新:py.test test_filename.pyを実行すると、python -m unittest test_filename.pyまたはnosetest test_filename.pyを実行すると、1回のパス、2回の失敗が発生します。 1パス、1失敗、1エラーです。

+0

コードラインでコードを印刷するのは非常に便利ではありません... –

+0

あなたの質問を明確にすることができます – BufBills

+0

'py.test'は、テストメソッドから発生した例外をすべて失敗として扱います。一方、エラーは、治具のセットアップ/ティアダウンがうまく終了しない場合です。 – pupssman

答えて

2

pytestはunittestようん(原因AssertionErrorに)試験から障害を区別し、試験エラー(他の例外)しません。これはバグではなく、設計によるものです。

this threadにこのディスカッションのサポートを追加するためのディスカッションがあり、その結果、pytest-finer-verdictsプラグインが発生しました。

関連する問題