можно проверить параметры имитируемой функции используя имена параметров в тесте, не полагаясь на способ вызова функции (либо с помощью args или с kwargs)?
Конкретный пример
Мне бы хотелось, чтобы этот пример возвращал пройденный тест:
Код: Выделить всё
# function under test.
# Please assume that `callback` has proper type annotations.
def domain_code_function(callback):
callback (1,2,c=3)
# function that would normally be passed to `domain_code_function`
# **Note**:
# This function has three params `a`, `b` and `c`.
def add_values(a,b,c):
return a + b + c
class Tests(unittest.TestCase):
def test_works(self):
# setup
mymock = MagicMock()
# run
domain_code_function(mymock)
# check
# **Note**:
# Verify each parameter by name.
mymock.assert_called_with(a=1,b=2,c=3)
- Я не хочу менять способ вызова функции в коде домена (args или kwargs) (Как указано в названии и описании)
Опираться на позиционные аргументы для тестов кажется хрупким и ненадежным. не очень хорошо читаемо.
Что я пробовал
Используя unittest.mock.call:
[*]
Код: Выделить всё
mymock.assert_has_calls([call(a=1,b=2,c=3)])Подробнее здесь: https://stackoverflow.com/questions/792 ... g-conventi
Мобильная версия