2

我有这样的功能

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 时测试所有列表内容。谢谢

4

1 回答 1

3

使用模拟包,您可以:

  • 模拟该类fun1包含在您的自定义类中,该类覆盖fun2fun3
  • 模拟class.fun2class.fun3模拟Mock(return_value=<your_mocked_return_value>)。要测试正确的调用,您可以使用mock.call_countor mock.call_args
于 2013-08-11T21:28:51.613 回答