unittest
unittest单元测试框架,主要由四部分组成:测试固件、测试用例、测试套件、测试执行器
【测试固件】有两部分,执行测试前的准备部分setUp(),测试执行完后的清扫部分tearDown()
【测试用例】中,包含测试固件(可以不写),具体的测试代码的函数。unittest会自动识别test开头的函数是测试代码,一定要用小写的test开头!
很多测试用例的集合就是【测试套件】,unittest.TestSuite()初始化一个测试套件Suite实例后使用suite.addTest(类名('test_测试函数'))加载测试方法到测试套件中(最常用的是使用discover()方法可以把指定路径下所有测试方法都加载到测试套件中)
【测试执行器】test runner用来执行加载的测试用例,可以是单个测试用例,也可以是测试套件
例子一:单个执行测试用例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import unittest class lesson(unittest.TestCase): def test_case1(self): # 自动识别小写test作为测试代码 print("写入test case 1") if __name__ == '__main__': unittest.main() # unittest.main()单个执行测试用例
例子二:执行测试套件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import unittest # 从文件test_case/company/test_getLog加载GetLog类 from test_case.company.test_getLog import GetLog from test_case.company.test_jiansuo import GetCompanyListR # 使用测试套件,添加GetLog类里面的test_getLogN方法 suite = unittest.TestSuite() # 初始化一个测试套件Suite实例 suite.addTest(GetLog('test_getLogN')) # GetLog是类名,test_getLogN是测试函数 suite.addTest(GetCompanyListR('test_ListRetrieval')) # 直接在控制台输出 runner = unittest.TextTestRunner() runner.run(suite)
例子三:批量加载的方法执行测试套件
# 在项目下新建,不要在包里
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import unittest # 批量加载iscover方法里面有三个参数:case_path:这个是待执行用例的目录-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了 case_path = r'F:\apac-mis-test\test_case' discover = unittest.defaultTestLoader.discover(case_path, pattern="test_bianji*.py", top_level_dir=None) #直接在控制台输出 runner = unittest.TextTestRunner() #discover加载的用例是list集合,用unittest的TextTestRunner的run去执行。 runner.run(discover)
参考:
http://www.cnblogs.com/myal/p/9337394.html
https://www.cnblogs.com/myal/category/1257824.html