【发布时间】:2019-05-14 22:44:07
【问题描述】:
我有一个函数
# foo.py
NUM_SHARDS = 10
def get_shard(shard_key: int) -> int
return (shard_key % NUM_SHARDS) + 1
我想模拟这个函数,这样每当调用这个函数时,它都会返回一个特定的值。我试过这样的补丁
# test.py
@mock.patch('foo.get_shard', return_value=11)
def testSomething(self, patched_func):
patched_func() # >> 11 ... OK so this is fine but
get_shard(4) # >> 5 .... Original impl being executed
我想深入修改此函数以始终返回此值,无论此函数是否直接从单元测试中调用。
就上下文而言,我有许多生产分片 (10) 和一个测试分片 (11)。 get_shard 函数被多次调用,该函数的生产版本只知道 10 个分片。所以,我希望这个函数在单元测试的上下文中执行时总是返回 11(测试分片号)。
【问题讨论】:
标签: python python-3.x mocking patch python-unittest