为了运行我的所有单元测试,我使用以下脚本,其中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))
如何从套件中删除单个测试(不是来自测试文件的所有测试)?
答案 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