Как передать дополнительный параметр в unittest's side_effect в Python?
Я использую side_effect для динамического мокинга в unittest. Вот код.
// main functionn
from api import get_users_from_api
def get_users(user_ids):
for user_id in user_ids:
res = get_users_from_api(user_id)
// test script
def get_dynamic_users_mock(user_id):
mock_by_user_id = {
1: {
"id": 1,
"first_name": "John",
"last_name": "Doe",
...
},
2: {
"id": 2,
"first_name": "Jane",
"last_name": "Smith",
...
},
...
}
return mock_by_user_id[user_id]
@patch("api.get_users_from_api")
def test_get_users(self, mock_get_users)
user_ids = [1, 2, 3]
mock_get_users.side_effect = get_dynamic_users_mock # mock get_users_from_api
get_users(user_ids) # call main function
Я хочу передать дополнительный параметр из test_get_users
в эту get_dynamic_users_mock
функцию.
Как это сделать?
Я не уверен, что понял вас, но вы могли бы попробовать это.
def get_dynamic_users_mock(user_id, extra_parameter):
mock_by_user_id = {
1: {
"id": 1,
"first_name": "John",
"last_name": "Doe",
...
},
2: {
"id": 2,
"first_name": "Jane",
"last_name": "Smith",
...
},
...
}
# do whatever with extra_parameter
return mock_by_user_id[user_id]
@patch("api.get_users_from_api")
def test_get_users(self, mock_get_users)
user_ids = [1, 2, 3]
extra_paramter = 'extra'
mock_get_users.side_effect = lambda user_id:
get_dynamic_users_mock(user_id, extra_parameter)
get_users(user_ids)