Home > Mobile >  Assert whether a function is being called inside another function
Assert whether a function is being called inside another function

Time:01-17

I have 2 functions and the other one is called only when the parameter passed is True.

def func1(para1 = True):
       // Some lines of code
       if para1 == True:
               func2()

def func2():
       // Some lines of code

Now, I'm trying to create a unittest that checks whether the nested function func2 is being called(When parameter passed to func1 is true). I checked online and found something related to Mock() but did not understand how to use for this particular test case. How can I proceed with this?

CodePudding user response:

example.py:

def func1(para1=True):
    if para1 == True:
        func2()


def func2():
    pass

test_example.py:

from unittest import TestCase
import unittest
from unittest.mock import patch
from example import func1


class TestExample(TestCase):
    @patch('example.func2')
    def test_func1__should_call_func2(self, mock_func2):
        func1()
        mock_func2.assert_called_once()

    @patch('example.func2')
    def test_func1__should_not_call_func2(self, mock_func2):
        func1(False)
        mock_func2.assert_not_called()


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

Test result:

..
----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK
  •  Tags:  
  • Related