我有这样的功能
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时测试所有列表内容。感谢
答案 0 :(得分:3)
使用mock包可以:
fun1
包含在您的自定义类中,该类会覆盖fun2
和fun3
class.fun2
和class.fun3
模拟Mock(return_value=<your_mocked_return_value>)
。要测试正确的来电,您可以使用mock.call_count
或mock.call_args
。