Reputation: 105
Here are my snippets
module1.py
class Client:
def __init__(self):
self.api_client = APIClient()
def get_resources(self):
#this method gets some data
#end returns list with dictionaries
return [{k1:v1},{k2:v2} ...]
module2
config = {}
def add_config(resource):
#process the data pass by resource
config[resource[k1]] = data
def instantiate_config():
for item in Client().get_resources()
add_config(item)
So I want to test this instantiate_config with pytest. Here is my try:
@patch('module1.Client.get_resources')
def test_instantiate_config(self, client_mock):
dummy_data = {some_dummy_data}
#it is a copy of the list, returned form Client().get_resources()
client_mock.get_resources.returned_values = dummy_data
instantiate_config()
assert 'key1' in config #config is the same config from module2
But this gives empty config dict. I don't know is that possible - to mock Client().get_resources() to give it same value and that value to be passed automatically as argument to add_config_func. If it it not what is the best way to test instantiate_config function
. Not sure is in clear or not, cuz it is a little bit long story
Upvotes: 1
Views: 606
Reputation: 72
Your mock is already representing the method get_resources, and you have a typo in "returned_values". Change to : client_mock.return_value = dummy_data
Upvotes: 1