Trying to unittest a method that receives a class as an argument but unsure how to mock it right
I am trying to unittest this method `
def get_local_path(p4_path, p4):
if p4_path.endswith('...'):
p4_path = p4_path.replace('/...', '')
path = p4.run("where", p4_path)[0]
for key, value in list(path.items()):
if key == 'path':
path = value.replace('\\', '/')
return path
The method receives p4 as an argument from a different script, and p4 is the p4python class (its already instantiated), so i can run p4 commands. I am trying to learn how to unittest and really unsure how to go about mocking this. I tried to patch it but that didn't work, and then i tried to create a Mock object and pass it in but I have no idea how to deal with when it calls the .run.
def test_get_local_path(self):
mock_p4 = mock.Mock()
# not sure what to do here, or how to get it to assign return value to p4.run
get_local_path('//mypath/test', mock_p4)
Simply assign the desired return value to p4.run.return_value
:
def test_get_local_path(self):
mock_p4 = mock.Mock()
p4.run.return_value = "..."
get_local_path('//mypath/test', mock_p4)