Мне нужно убедиться, что функция вызывается с определенным аргументом в python. Я издевался над этой функцией, используя магический макет.Mocking, assert_called with, in python
self.function = MagicMock()
self.function(subject= "Hello World")
что-то есть вдоль линий
self.function.assert_called_with("Hello World")
или
self.function.assert_called_with(subject= "Hello World")
Извините, если это было предложено до ли, но я ковыряться в макет документации и Безразлично Кажется, что ни одно из утверждений не будет работать для меня.
EDIT: Я добавил некоторые отладки вывод
При попытке отладки, я вижу
AssertionError:
Expected call: mock('Hello World')
Actual call: mock('thing i dont care about', 'Hello World', 'thing i dont care about')
Таким образом, очевидно, что функция вызывается, но утверждают, действует странно. Он не распознает «Hello World» в списке аргументов или что-то в этом роде.
EDIT2:
Я изменил вверх мой код немного, и она по-прежнему не соответствует должным образом
self.function = MagicMock(field1 = None, field2 = None, subject = None, field4 = None)
#later on...
self.function(1,2,"Hello World",4) #these params will not always be 1,2,4 .. I made them so to
#show an example
#even further down the road
self.function.assert_called_with(ANY, ANY, "Hello World", ANY)
Что-то вроде этого не работает для меня тоже. Тем не менее получаю ошибку
AssertionError:
Expected call: mock(<ANY>, <ANY>, "Hello World", <ANY>)
Actual call: mock(1,2,"Hello World", 4)
Опять же, я не мог просто сделать что-то вроде
Как «ANY» соответствуют шаблону аргумент?
Очевидно, что мой фактический код намного сложнее этого, но это должно было передать общую проблему, которую я испытываю. – Zack
в чем проблема? код работает. – alko
Мне нужно что-то, что обнаружит один параметр, из нескольких. Вещь, о которой говорится, что макет называется с mock («First Thing», «Second Thing», «Hello World» и т. Д.) , что означает, что это не соответствует моей теме. – Zack