【发布时间】:2015-04-12 00:30:39
【问题描述】:
import module
from x import X
class A:
def method():
return module.something(arg=X())
我创建了以下单元测试:
with patch('filename.module.something') as something_mock:
with patch('filename.X'): as x_mock:
a.method()
something_mock.assert_called_once_with(arg=x_mock.return_value)
x_mock.assert_called_once_with()
有人提到没有解释就没有必要嘲笑filenme.X。有没有其他方法可以在不模拟filename.X 的情况下验证对something 的调用?我将如何更改以下断言来验证调用?
something_mock.assert_called_once_with(arg=_____)
【问题讨论】:
-
如果你的代码真的像给出的例子,那么单元测试的意义何在?在这个代码级别没有发生任何事情——根本没有逻辑、算法或数据复杂性。 FWIW,随着时间的流逝,我发现自己嘲笑的次数越来越少,编写的单元测试越来越少,并且编写更多(和更有趣)的集成或端到端测试来运行系统的更大组件。
-
@FMc 为了清楚起见,代码被简化
-
@FMc ...有趣...我做了完全相反的路径:)。恕我直言,如果没有良好且广泛的单元测试,集成测试的用处就会降低:当集成测试失败时,单元测试会为您提供一个非常坚实的基础,即您可以信任什么以及您的代码/设计中可能存在一些漏洞。
标签: python unit-testing mocking