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エラーです。
コードラインでコードを印刷するのは非常に便利ではありません... –
あなたの質問を明確にすることができます – BufBills
'py.test'は、テストメソッドから発生した例外をすべて失敗として扱います。一方、エラーは、治具のセットアップ/ティアダウンがうまく終了しない場合です。 – pupssman