我是Python的新手,我在Github上看到许多使用Mock进行测试的项目,但我不明白为什么。
当我们使用mock时,我们构造一个具有特定return_value的Mock对象,我真的不明白为什么我们这样做。我知道有时很难建立我们需要的资源但是如果我们构造一个具有一定回报值的对象/函数又有什么意义呢?
答案 0 :(得分:1)
模拟可以帮助编写单元测试。 在单元测试中,您希望测试一小部分实现。例如,小到一个函数或一个类。
在中等大小的软件中,这些小部件相互依赖。或者有时候存在外部依赖关系。您可以以其他方式打开文件,执行系统调用或获取外部数据。
在为代码的一小部分编写定向单元测试时,您不希望花时间设置其周围的所有其他内容。 (文件,系统调用,外部数据)。模拟在那里来帮助你。使用mock,您可以使代码的其他依赖项完全按照您的喜好运行。这样您就可以专注于测试预期的实现。
使用返回值来模拟:假设您要测试func_a
。并func_a
调用func_b
。 func_b
做了很多质朴的处理来计算其返回值。例如,与外部服务交谈,进行大量系统调用或其他一些昂贵的操作。由于您正在测试func_a
,因此您只关心func_b
的可能返回值。 (因此func_a
可以使用它们)在这种情况下,您将模拟func_b
并明确设置返回值。这可以真正简化您的测试复杂性。