Игнорировать цепочки вызовов в Assert_has_calls с помощью мокера pytestPython

Программы на Python
Anonymous
Игнорировать цепочки вызовов в Assert_has_calls с помощью мокера pytest

Сообщение Anonymous »

При использовании макета из pytest-mock, как я могу использовать has_calls для проверки вызовов определенного метода без проверки всех вызовов, выполненных для возвращаемого значения этого метода?

Например:

Код: Выделить всё

import subprocess
from unittest import mock

def test_foo(mocker):
m = mocker.patch('test_main.subprocess')
r1 = subprocess.run(['foo'])
r1.check_returncode()
r2 = subprocess.run(['bar'])
r2.check_returncode()

m.run.assert_has_calls([
mock.call(['foo']),
mock.call(['bar']),
])
Не работает с:

Код: Выделить всё

E       AssertionError: Calls not found.
E       Expected: [call(['foo']), call(['bar'])]
E       Actual: [call(['foo']),
E        call().check_returncode(),
E        call(['bar']),
E        call().check_returncode()]
Почему также включены вызовы возвращаемого значения? Я просто хочу проверить, был ли у меня вызов subprocess.run(['foo']) за которым последовал вызов subprocess.run(['bar']). Меня не волнуют вызовы того, что он возвращает, но меня заботит порядок выполнения вызовов.

Вернуться в «Python»