2

すべての単体テストを実行するために、次のスクリプトを使用します。ここで、test_filesはテストファイルの文字列のリストです。

for test_file in test_files:
    test_file = test_file[:-3]
    module = __import__(test_file)
    for name, obj in inspect.getmembers(module):
        if inspect.isclass(obj):
            if str(obj).startswith("<class 'test_"):
                suite.addTest(unittest.TestLoader().loadTestsFromTestCase(obj))

後でスイートから単一のテストを削除するにはどうすればよいですか(テストファイルからすべてのテストを削除するわけではありません)?

4

2 に答える 2

3

最終的に新しいスイートを作成し、スキップしたいテストを除くすべてのテストを追加しました。テストがスキップされたものとしてリストされるように、ダミーのSkipCaseクラスを作成しました。

class SkipCase(unittest.TestCase):
    def runTest(self):
        raise unittest.SkipTest("Test would take to long.")

new_suite = unittest.TestSuite()

blacklist = [
    'test_some_test_that_should_be_skipped',
    'test_another_test_that_should_be_skipped'
]

for test_group in suite._tests:
    for test in test_group:
        if test._testMethodName in blacklist:
            testName = test._testMethodName
            setattr(test, testName, getattr(SkipCase(), 'runTest'))
        new_suite.addTest(test)
于 2012-09-05T11:51:02.493 に答える
2

このスキップデコレータは、クラスまたはメソッドベースで使用できます。

import unittest
@unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
class MarketTest(unittest.TestCase):
    def setUp(self):
        return
    @unittest.skip("Skipping market basics test")
    def test_market_libraries(self):
        return
于 2015-10-21T16:49:25.667 に答える