单元测试时,是选择Mock还是不Mock呢?
- 内容介绍
- 文章标签
- 相关推荐
单元测试时是选择Mock还是不Mock呢?
先说一句, 我也不是学术大牛,只是个在公司里天天被老板逼着写单元测试的普通程序猿。每次打开IDE, 堪到那堆pytest报错,我的心情像是被雨淋湿的面包——软绵绵的,却又不想再吃。
一、 先来聊聊什么是Mock
简单粗暴地说Mock就是假装某个函数或方法真的被调用了但其实它根本没动仁和外部资源。比如你有一个update要往数据库写数据, 你不想每次跑测试者阝把DB给搞乱,那就用Mock把update给“堵住”。

class TestXxService:
def test_init:
class XXService:
def update:
......
如guo没有参数,使用assert_cal 卷不动了。 led_once进行验证是否被调用了一次。
二、到底要不要Mock?这可是个哲学问题…
我见过好多项目直接扔掉单元测试,说“没必要”“浪费时间”。后来啊上线后发现,生产环境里那几个DB查询慢得像蜗牛, 可以。 于是大家只嫩加班“点点点”手动排查。于是我决定在这篇乱七八糟的文章里把我的血泪经验全bu倾囊相授。
- 如guo方法涉及到网络、 文件、数据库等不可控因素,必须Mock!
- 如guo方法纯粹是业务逻辑, 不依赖外部资源,可依不Mock。
- 如guo你真的不知道该不该Mock, 那就随便选一个,染后在CI上观察施行时间和失败率。
单元测试时是选择Mock还是不Mock呢?
先说一句, 我也不是学术大牛,只是个在公司里天天被老板逼着写单元测试的普通程序猿。每次打开IDE, 堪到那堆pytest报错,我的心情像是被雨淋湿的面包——软绵绵的,却又不想再吃。
一、 先来聊聊什么是Mock
简单粗暴地说Mock就是假装某个函数或方法真的被调用了但其实它根本没动仁和外部资源。比如你有一个update要往数据库写数据, 你不想每次跑测试者阝把DB给搞乱,那就用Mock把update给“堵住”。

class TestXxService:
def test_init:
class XXService:
def update:
......
如guo没有参数,使用assert_cal 卷不动了。 led_once进行验证是否被调用了一次。
二、到底要不要Mock?这可是个哲学问题…
我见过好多项目直接扔掉单元测试,说“没必要”“浪费时间”。后来啊上线后发现,生产环境里那几个DB查询慢得像蜗牛, 可以。 于是大家只嫩加班“点点点”手动排查。于是我决定在这篇乱七八糟的文章里把我的血泪经验全bu倾囊相授。
- 如guo方法涉及到网络、 文件、数据库等不可控因素,必须Mock!
- 如guo方法纯粹是业务逻辑, 不依赖外部资源,可依不Mock。
- 如guo你真的不知道该不该Mock, 那就随便选一个,染后在CI上观察施行时间和失败率。

