前言
先来看看断言是什么?它又有什么用?
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。
使用断言可以创建更稳定、品质更好且 不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit/JunitX)。
除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序中得到维护的极好的方法。
使用断言使我们向按契约式设计更近了一步。
一、python中的断言
所谓断言,就是证明,使用 assert 对输入函数输入参数和函数返回结果分别做前校验和后校验。
python常用断言函数:
二、具体案例
代码:
# -*- coding: UTF-8 -*- def check_param(key_value_map, key): '''参数校验,断言就是对输入参数的一个证明,这些参数必须符合这些要求 key_value_map: 非空字典 key:非空字符串 ''' # 断言 assert key_value_map is not None and type(key_value_map) == type({}) assert key is not None and type(key) == type("") def get(key_value_map, key): check_param(key_value_map, key) return key_value_map.get(key) def set(key_value_map, key, value): check_param(key_value_map, key) key_value_map[key] = value if __name__ == '__main__': key_value_map = {} set(key_value_map, "test", {}) value = get(key_value_map, "test") print("后校验,返回值必须符合预期") assert type(value) == type({}) assert value == {}
效果图:
解析:通过assert来断言对应参数的值,都用于测试场景,测试对应参数和函数是否是原本设计的那样,如上图所示,通过断言,我们成功完成了对应的测试。这种自动化的功能测试在优化联调的时候对我们的程序大有裨益。