⽂章⽬录
unittest 能⾃动发现并执⾏测试⽤例,规则如下:
⾸先指定要查的⽬录(默认是当前⽬录)。
爬梯电动
轮椅如果⼦⽬录属于 Python 包,则也加⼊查范围。然后在该⽬录下查名称匹配 test*.py 的⽂件。 接着在该⽂件中查继承 unittest.TestCase 的类,
最后查该类中名称以 test 开头的⽅法,作为测试⽤例来执⾏。
为了发现不是以 test 开头的测试⽅法,乃⾄更灵活地匹配,本⽂定义了⼀个继承 unittest.TestLoader 的⼦类。代码
import sys
import unittest
import functools
from fnmatch import fnmatchcase汽车除霜器
class MyTestLoader(unittest.TestLoader):
testNamePatterns =None
def getTestCaseNames(self, testCaseClass):
"""
橡胶补强剂Customize this code to allow you to filter test methods through testNamePatterns.
"""
def shouldIncludeMethod(attrname):
if not attrname.stMethodPrefix):
滤波装置
return False
testFunc =getattr(testCaseClass, attrname)
铭牌制作
if not callable(testFunc):
return False
折叠炕桌
stNamePatterns is None or \
any(fnmatchcase(attrname, pattern)for pattern stNamePatterns)
testFnNames =list(filter(shouldIncludeMethod,dir(testCaseClass)))
if self.sortTestMethodsUsing:
testFnNames.sort(p_to_key(self.sortTestMethodsUsing))
return testFnNames
if __name__ =='__main__':
testLoader = MyTestLoader()
result = unittest.TextTestRunner(verbosity=2).run(discovered_tests)
运⾏效果
[root@CentOS ~]# python3 runner.py
minus_test (test1.TestMath) ... FAIL
test_add (test1.TestMath) ... ok