如何使用for循环对函数进行单元测试?

时间:2013-08-11 21:24:02

标签: python unit-testing

我有这样的功能

def fun1(self, p1, p2):

    #fun2 fetches data from db and creates doc_list - (return db.coll.find(query using p1 and p2), new query using p1 and p2)

    doc_list = self.fun2(p1, p2)       
    for doc in doc_list:
        self.fun3(p2, doc)

其中fun3当前打印logger.info消息。我想为这个函数编写一个单元测试,但是我不清楚它应该如何重构,因为它有一个for循环。最终目标是进行单元测试,我可以使用自己的硬编码数据(欺骗f2数据)欺骗来自db查询功能的数据,并可能在单元测试fun1时测试所有列表内容。感谢

1 个答案:

答案 0 :(得分:3)

使用mock包可以:

  • 模拟课程fun1包含在您的自定义类中,该类会覆盖fun2fun3
  • 模拟class.fun2class.fun3模拟Mock(return_value=<your_mocked_return_value>)。要测试正确的来电,您可以使用mock.call_countmock.call_args