我有一个耗时的方法,里面有非预定义的迭代次数我需要测试:
def testmethod():
objects = get_objects()
for objects in objects:
# Time-consuming iterations
do_something(object)
一次迭代足以测试我。仅使用一次迭代测试此方法的最佳做法是什么?
答案 0 :(得分:2)
也许把你的方法变成
def my_method(self, objs=None):
if objs is None:
objs = get_objects()
for obj in objs:
do_something(obj)
然后在测试中,您可以使用自定义objs参数调用它。
答案 1 :(得分:2)
<强>更新强>
我误读了原来的问题,所以这就是我如何在不改变源代码的情况下解决问题的方法:
Lambda出你的调用来获取对象以返回单个对象。例如:
from your_module import get_objects
def test_testmethdod(self):
original_get_objects = get_objects
one_object = YourObject()
get_objects = lambda : [one_object,]
# ...
# your tests here
# ...
# Reset the original function, so it doesn't mess up other tests
get_objects = original_get_objects