unittest测试框架
单元测试概述
什么是单元测试:单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的,很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为
单元测试什么时候测试:程序进行代码编写的过程中
单元测试由谁负责:一般由开发负责
单元测试需要注意
明确输入和输出:单元测试的时候一个大前提就是需要清除的知道,自己要测试的程序块所预期的输入和输出,然后根据这个预期和程序员逻辑来书写case。
照着需求设计case而不是照着程序设计case:这里的预期结果一定要针对需求/设计的逻辑去写,而不是针对程序的实现去些,否则单侧就失去了意义,照着错误的实现设计出的case页很可能是错的。
单元测试框架
unittest、pytest、nose、mock、......
单元测试覆盖率
代码覆盖率也是被用于度量自动化测试和手工测试测试是否全面的指标之一,应用覆盖率的思想增强测试用例的设计
单元测试覆盖类型
语句覆盖:覆盖所有语句
条件覆盖:对每一个表达式(语句)的true和false的覆盖
判断覆盖:对每一条判断进行整个判断条件的true和false覆盖
路径覆盖:覆盖所有可能执行的路劲
语法
class
1.Test 开头进行命名
2.需要继承 unit test.TestCase
def
1.test_开头进行命名
setUp
1.用例运行前执行
tearDown
2.用例运行后执行
用例执行方法
一,通过以下方法来调用测试方法
if __name__=="__main__": unittest.main()
二,加入容器中执行
if __name__ == "__main__": suite=unittest.TestSuite() suite.addTest(TestMethod("test_01")) suite.addTest(TestMethod("test_02")) unittest.TextTestRunner().run(suite)
通过pycharmide使用该方法时,有可能只添加一条方法但是执行的时候执行所有测试方法。换成命令行执行可以解决该问题
三,同时测试多个类
if __name__ == "__main__": suite1=unittest.TestLoader(),loadTestsFromTestCase(TestCase1) suite2=unittest.TestLoader(),loadTestsFromTestCase(TestCase1) suit=unittest.TestSuite([suite1,suite2]) unittest.TextTestRunner(verbosity=2).run(suite)
四,匹配某个目录下所有以test开头的py文件,执行这些文件下的所有测试用例
if __name__ == "__main__": test_dir = "./test_case" discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py") unittest.TextTestRunner(verbosity=2).run(discover)
discover:可以一次调用多个脚本
test_dir:被测试脚本路径
pattern:脚本名称匹配规则