2017-07-28 2 views
0

J'essaie de faire un test unitaire pour vérifier si cette fonction python (dispatch) passe les paramètres corrects à deal_with_result.Python Unittest; Comment obtenir les paramètres transmis lorsque la fonction est appelée?

Existe-t-il un moyen de "détourner" les paramètres d'entrée lorsque la fonction deal_with_result est appelée en dispatch?
Je n'ai pas le droit de modifier le code dans la fonction d'envoi.

Voici un aperçu du besoin que je veux dans mon test unitaire:

import maker 
from operators import op_morph 
import unittest 
from unittest.mock import Mock 
import cv2 

img = cv2.imread("/img_tests/unitTestBaseImage.png") 

def my_side_effect(*args, **kwargs): 
    global img 
    print(args) 
    print(kwargs) 
    if args!=None: 
     if len(args)>0: 
      if args[0] == img: 
       return 0 
      return 3 
     else: 
      return 2 
    return 1 

class TestCalls(unittest.TestCase): 

    def test_dispatch(self): 

     global img 
     makerMock = Mock() 
     makerMock.deal_with_result.side_effect = my_side_effect 

     #calling the dispatch function 
     maker.dispatch(["json_example.json"]) 

     #instead of passing this mock I want to get the real parameters passed 
     #when the function deal_with_result is called in dispatch. 
     temp=makerMock.deal_with_result("img") 
     print("image return code: "+str(temp)) 


if __name__ == '__main__': 
    unittest.main(exit=False) 

Merci.

Répondre

0

Je cherchais une réponse à ce problème au travail. Je n'y ai rien trouvé. Je vous recommande de demander à votre patron de vous permettre de modifier la fonction de base pour ne pas perdre de temps et de ressources.