Модульные тесты должны проверять функциональность и пытаться не зависеть от деталей реализации.Mock.assert_called_with()
- удобная функция, но AFAIK сравнивает *args
с *args
и **kwargs
с **kwargs
.Следовательно:
# class to be mocked during test
class SomeClass():
def func(self,a,b,c=5):
# ...
# code under test
somaclass_instance.func(1,b=2,c=3)
# test code that works
someclass_mock.func.assert_called_with(1,b=2,c=3)
# test code that won't work
someclass_mock.func.assert_called_with(1,2,c=3)
someclass_mock.func.assert_called_with(a=1,b=2,c=3)
есть способ обобщить это так, что особенности, которые *args
, где используется как **kwargs
в вызове func
, который действительно является деталью реализации, будутигнорировали?