python / django unittest函数覆盖

时间:2010-06-24 22:19:12

标签: python django unit-testing

我有一个耗时的方法,里面有非预定义的迭代次数我需要测试:

def testmethod():
    objects = get_objects()
    for objects in objects:
        # Time-consuming iterations
        do_something(object)

一次迭代足以测试我。仅使用一次迭代测试此方法的最佳做法是什么?

2 个答案:

答案 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