Причина, по которой вы видите это различное поведение в зависимости от того, есть ли у вас = 0
в конце вызова, который вы тестируете, заключается в том, что в модели данных Python они соответствуют двум различным магическим методам: __getitem__
и __setitem__
.
Это имеет смысл, потому что, например, выполнение some_dictionary['nonexistent_key]'
повышает KeyError
, тогда как some_dictionary['nonexistent_key]' = 1
- нет, и устанавливает значение, как и ожидалось.
Теперь, чтобы исправить ваш тест, вам нужно всего лишь изменить свое утверждение с:
mock_df_x.loc.__getitem__.assert_called_with((False, 'atr'))
, который работает только при доступе к ключу:
mock_df_x.loc.__setitem__.assert_called_with((False, 'atr'), 0)
, который работает, если вы пытаетесь присвоить значение этой клавише.
Обратите внимание и на дополнительный параметр, соответствующий значению, которое вы фактически пытаетесь присвоить.