Согласно документации unittest.mock.reset_mock , reset_mock
принимает аргументы ключевых слов return_value
и side_effect
. Но когда я пытаюсь его использовать, я получаю TypeError:
from unittest.mock import patch
import pandas
def foo():
return pandas.read_csv("/dev/null")
@patch("pandas.read_csv", autospec=True)
def test_foo(pr):
pr.return_value = 42
foo()
pr.reset_mock(return_value=True)
foo()
Запуск с pytest
дает:
============================= test session starts ==============================
platform linux -- Python 3.7.3, pytest-5.3.0, py-1.8.0, pluggy-0.13.0
rootdir: /tmp
plugins: mock-1.12.1, cov-2.8.1
collected 1 item
mwe17.py F [100%]
=================================== FAILURES ===================================
___________________________________ test_foo ___________________________________
pr = <function read_csv at 0x7fdeff5ddbf8>
@patch("pandas.read_csv", autospec=True)
def test_foo(pr):
pr.return_value = 42
foo()
> pr.reset_mock(return_value=True)
E TypeError: reset_mock() got an unexpected keyword argument 'return_value'
mwe17.py:11: TypeError
============================== 1 failed in 2.83s ===============================
Когда я высмеиваю os.mkdir
вместо pandas.read_csv
, это действительно работает.
Почему reset_mock
, когда насмешливая одна функция не может принять этот аргумент ключевого слова, но насмешливая другая делает?