4

バージョン3.4以降、Python supports a simple subtest syntax when writing unittests。簡単な例は次のようになります。Python unittestsで別々にカウントするサブテスト

import unittest 

class NumbersTest(unittest.TestCase): 

    def test_successful(self): 
     """A test with subtests that will all succeed.""" 
     for i in range(0, 6): 
      with self.subTest(i=i): 
       self.assertEqual(i, i) 

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

テストを実行すると、出力は

python3 test_foo.py --verbose 
test_successful (__main__.NumbersTest) 
A test with subtests that will all succeed. ... ok 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 

になりますしかし、私の本当の世界のユースケースでは、サブテストは、より複雑な反復可能に依存し、各サブテストごとに非常に異なるものをチェックしてください。したがって、私はむしろ、各サブテストをカウントし、完全な画像を得るために、出力(この例ではRan 6 tests in ...)内の分離されたテストケースとして列挙します。

平凡なunittestモジュールをPythonで使用していますか? The nose test generator featureはそれぞれのテストを個別に出力しますが、可能であれば標準ライブラリとの互換性を保ちたいと思います。

答えて

0

あなたはunittest.TestResultをサブクラス化することができます:

class NumbersTestResult(unittest.TestResult): 
    def addSubTest(self, test, subtest, outcome): 
     # handle failures calling base class 
     super(NumbersTestResult, self).addSubTest(test, subtest, outcome) 
     # add to total number of tests run 
     self.testsRun += 1 

はその後NumbersTestオーバーライドrun機能に:申し訳ありません

def run(self, test_result=None): 
    return super(NumbersTest, self).run(NumbersTestResult()) 

私は今、完全に動作する環境でこれをテストすることはできませんが、これはトリックを行う必要があります。

関連する問題