Игнорировать цепочки вызовов в 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']). Меня не волнуют вызовы того, что он возвращает, но меня заботит порядок выполнения вызовов.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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