Python为测试注入模拟值

时间:2017-07-03 17:17:29

标签: python unit-testing flask

我有一种情况,我在Flask Web应用程序中有一个函数,从我想要进行单元测试的处理程序向下几层。该函数接受一些参数并根据从数据库中读取不同的值来更改它们。大概是这样的:

  def func_to_test(a=1, b=10, c=100):
     # do some processing
     if (read_d_from_database() == 10):
        # override a to something else
        # do something
     if (read_X_from_database() == 45):
        # override b to 45
        # do something
     #etc..

如何以独立的方式从外部测试此函数,以便我可以模拟read_d_from_database()等每次返回不同的值?

1 个答案:

答案 0 :(得分:0)

您可以查看patch() from unittest.mock。它允许您覆盖某些方法的行为方式。

>>> @patch('__main__.SomeClass')
... def function(normal_argument, mock_class):
...     print(mock_class is SomeClass)
...
>>> function(None)
True