2017-07-03 4 views
0

Ich habe eine Situation, wo ich in einer Flask-Web-App eine Funktion mehrere Ebenen von der Handler, die ich Unit-Test wollen. Die Funktion nimmt einige Parameter auf und ändert sie je nach dem Lesen verschiedener Werte aus einer Datenbank. Etwa so:Python injizieren Mock-Werte zum Testen

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.. 

Wie kann ich diese Funktion von außen in einer eigenständigen Art und Weise testen, damit ich die read_d_from_database simulieren kann() usw. verschiedene Werte jedes Mal zurückkehrt?

Antwort

0

Sie könnten patch() from unittest.mock überprüfen. Damit können Sie das Verhalten bestimmter Methoden überschreiben.

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