软件测试

单元测试框架之unittest总结

2019-01-01  本文已影响0人  davieyang

一、摘要

前篇文章已经详细介绍了unittest框架的特性,足以满足我们日常的测试工作,但那并不是unittest的全部,本片博文将介绍一些应该知道但未必能经常用到的内容

然而,想全部掌握unittest还远远不够

二、命令行模式执行用例

unittest框架支持命令行执行测试模块、测试类甚至单独的测试方法

执行测试模块:python -m unittest test_module1 test_module2 ...... 也可以采用路径的方式 python -m unittest tests/test_something.py,如果想用一个高级的verbosity的方式执行加上参数-v即可,例如 python -m unittest -v test_module

执行测试类:python -m unittest test_module1.Test_Class 

执行测试方法:python -m unittest test_module1.Test_Class.test_method 

如果想获取这种命令组合的help,则执行命令 python -m unittest -h 将得到如下帮助信息

如果没有传参数,那么将执行Test Discovery, 例如输入命令python -m unittest(它也等价于 python -m unittest discover)并未给他任何模块、类或者方法,那么他将做的事情便是Test Discovery

例如命令:python -m unittest discover -s project_directory -p "*_test.py"  本条命令中使用了参数 -s 和 -p ,-s表示从那个目录开始,默认为 (.), -p则表示匹配哪样的文件名,这条命令也等价于python -m unittest discover project_directory "*_test.py"

输入python -m unittest discover -h 将的到如何帮助,很清楚的写明了各参数说明

 三、TestLoader

在前边的文章中,我们说到了测试集合,其中有一种方法是使用到了unittest.TestLoader().loadTestsFromTestCase(TestClass),这种方式是直接loader()了测试类

实际上TestLoader还有其他的方法

loadTestsFromModule(module, pattern=None)

loadTestsFromName(name, module=None) 和loadTestsFromNames(names, module=None)

getTestCaseNames(testCaseClass) 返回一个存出测试方法名称的序列

discover(start_dir, pattern='test*.py', top_level_dir=None):这个方法我们已经用到好多次了

defaultTestLoader:他是一个TestLoader的实例,如果我们不需要定制化的TestLoader,直接使用这个即可还能必变重复创建TestLoader实例

四、总结

unittest单元测试框架介绍到这里基本上满足了日常的工作需要,然而这并不是unittest的全部,它还有很多的特性,读者可以直接访问Python官网查看unittest的API文档,对于学习来说,官方文档是最好的书籍

上一篇 下一篇

猜你喜欢

热点阅读