是否可自动化测试是评判程序好坏的唯一标准
注意
需要区分 mock 不同对象的方法, 例如:
- mock method (被测试类已被实例化) -> MagicMock
- mock method argument -> MagicMock
- mock class (被测试类尚未被实例化, 但是需要 mock 其实例化后的指定方法) -> with patch
Mock 与 MagicMock 的区别
MagicMock 更灵活一些,官方推荐默认使用 MagicMock.
什么时候使用 patch decorator
由于 module 和 class 是全局的,所以执行完一个测试之后需要 unmock, 防止影响到其 他的测试案例。
patch decorator 会自动进行 unmock.
patch V.S. patch.object
- patch -> mock method
- patch.object -> mock object method
注意:
- patch 和 patch.object 都无法对全局对象的方法进行 patch, 例如 mysql_conn.get
参考
- an introduction to mocking in python (非常适合作为 mock tutorial)
- mock 官方的get started (什么时候选择哪种 mock, 很系统)
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式