我使用Python的模拟框架进行测试 - 效果很好! 但是,我无法弄清楚的一件事是如何修补一个函数,以便用另一个函数替换调用。
示例:
# module_A.py
def original_func(arg_a,arg_b):
# ...
# module_B.py
import module_A
def func_under_test():
# ...
module_A.original_func(a,b)
# Some code that depends on the behavior of the patched function
# ...
# my test code
def alternative_func(arg_a,arg_b):
# do something essential for the test
def the_test():
# patch the original_func with the alternative_func here
func_under_test()
# assertions
通常断言就足够了,但在这种情况下,我需要alternative_func
在调用它时启动而不是original_func
。
另请注意alternative_func
需要相同的参数。
我确信它非常简单,而且可能是时间已晚,但我只是看不到它......
答案 0 :(得分:4)
在您的测试import module_A
顶部,然后在您的设置功能中使用:
module_A.original_func = alternative_func
答案 1 :(得分:1)
您需要保存原始功能,以便在完成测试功能后可以恢复:
import module_a
def the_test():
orig_func = module_a.original_func
module_a.original_func = alternative_func
# do testing stuff
# then restore original func for other tests
module_a.original_func = orig_func
答案 2 :(得分:0)
您可以重新指定原件以指向新的
original_func = alternative_func
然后调用original将实际调用替代