0

I am trying to make a unit test to check if this python function (dispatch) passes the correct parameters to deal_with_result.

Is there a way to "hijack" the input parameters when the function deal_with_result is called in dispatch?
I do not have the rights to modify the code in the dispatch function.

Here is a preview of want I want in my unit test:

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)

Thank you.

1 Answers1

0

I have been looking for an answer to this whilst at job.Haven't found anything on it. I recommend you to talk your boss into letting you modify the base function so you don't waste precious time and resources.