python3 unittest模块源码解析(零)---unittest的工作流程解析

unittest工作流程解析

unittest除去main外,还有以下这些核心组件:

  • loader : 加载器,用于从各种环境中加载测试
  • runner : 执行器,用于执行测式
  • suite : 测试套件,可以包含多个用例和套件
  • case : 测试用例,测试的基本单元
  • result : 测试结果,用来存放测试的结果

其大致工作原理是先由loader从环境中加载测试对象构建为suite,再由runner去执行suite,runner执行时首先会创建一个result对象,然后对suite不断迭代直致迭代对象为case时则执行case.run方法,最终将结果存放在result对象中。
下两图为个人理解而画的流程图,图一简略,图二则指出了各组件的工作时机作用。

图一:

Created with Raphaël 2.2.0 main/TestProgram parseArgs方法解析参数 是否解析到tests loadTestsFrom*(tests) 从指定名称中加载测试 suite runner.run(suite) suite.run对suite进行迭代 迭代元素是否是case 执行case.run 将所有case的测试结果 存放在同一个result对象中 报告结果 loader.discover批量加载测试 yes no yes no

图二

yes
no
创建TestResult实例result
suite
case
运行结果存放于result中
main/TestProgram
parseArgs方法解析参数
runTests方法执行测试
是否解析到tests名
loadTestsFrom*从tests名加载测试
discover批量加载测试
suite: 由case或suite所组成的套件
创建TestTestRunner实例testRunner
执行testRunner.run(suite)
执行suite.run方法对suite进行迭代
result
迭代元素是case还是suite
执行case.run
failure
skipped
expected failure
unexpected success
error
...

了解unittest的工作流程对我们解析其源码以及运用它进行测试都有很大的帮助。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值