2017-07-03 120 views
0

我有一種情況,我在Flask web應用程序中有一個函數,它要處理我想要進行單元測試的幾個層。該函數接受一些參數並根據從數據庫中讀取不同值來更改它們。大致是這樣的:Python注入模擬值進行測試

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()等,每次返回的值不同?

回答

0

您可以檢出patch() from unittest.mock。它允許你重寫某些方法的行爲。

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