从unittest套件中删除测试

时间:2012-08-27 11:34:32

标签: python unit-testing

为了运行我的所有单元测试,我使用以下脚本,其中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))

如何从套件中删除单个测试(不是来自测试文件的所有测试)?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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