单元测试三板斧
软件测试在现阶段的软件开发中占有越来越重要的地位。软件测试不仅仅是用于编码后验证编码是否正确,更多的是作为重构的保障(重构的第一步,都是建立测试)。单元测试有三把板斧:assert,setup&teardown,mock
assert——保障自动化
软件测试,应当是完全自动化的(最多为了加快速度而加上一个子集条件,例如pytest -k 匹配表达式
),而不是靠printf
人眼验证。
setup & teardown——保障可重复性、独立性
setup 和teardown用来在软件测试前构建环境、测试后清理环境。保证软件测试的可重复性。在测试用例后要完成环境的清理,以保证独立性
mock——保障测试粒度
软件开发中,函数应当权责分明:例如,虽然Controller调用了Service,但Controller的职责是参数转换,而不是处理业务逻辑。因此为了测试一个函数(Controller),那么就不应该受到业务逻辑(子函数)的影响。因此,需要一个工具能模拟子函数的输入和输出,而不考虑子函数的执行过程。这就是Mock工具。