mock 测试(mocks)是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为,很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为。
之所以使用mock测试,是因为真实场景很难实现或者短期实现起来很困难。主要场景有:
- 真实对象可能还不存在(接口还未完成)
- 真实对象很难搭建起来(第三方支付联调)
- 真实对象的行为很难触发(例如:网络错误)
- 真实对象速度很慢(例如:一个完整的数据库,在测试之前可能需要初始化)
- 真实对象可能包含不能用作测试(而不是为实际工作)的信息和方法
- 真实的对象是用户界面,或包括用户界面在内
- 真实的对象使用了回调机制
- 真实对象的行为是不确定性的(例如:当前的时间或当前的温度)
mock安装
pip install pytest-mock
mock使用
pytest中使用无需导入,只需要导入pytest就可使用,它提供了一个名为mocker
的fixture。使用方法
def test(mocker):
mocke