Как я могу использовать Python Mox, чтобы проверить, вызывается ли метод с эквивалентом строки?
Я хочу проверить, вызывается ли функция со строкой - однако, похоже, что имеет значение, если эта строка создается с использованием "% s" для вставки подстроки. Тест не проходит с этой ошибкой:
UnexpectedMethodCallError: Unexpected method call. unexpected:- expected:+
- foo('Hello %s', 'world') -> None
? ------
+ foo('Hello world') -> None
Как проверить, вызывается ли метод в "Hello world", независимо от того, как была создана строка?
2 ответа
В питоне нет типа или класса, подобного "отформатированной строке". Просто строка. Я думаю, что у вас есть ошибка в вашем коде. Я имею ввиду, это твоя вина. Могу поспорить, вы пытаетесь назвать это так:
foo('Hello %s', 'world')
Но вы должны вместо этого сделать
foo('Hello %s' % 'world')
Который даст вам ожидаемый результат.
Вы должны делать
'Hello %s' % 'world'
Есть также ряд компараторов, которые могут вам помочь. Если вас не волнует значение строки, вызовите: mox.IsA(str)
, Вы также можете сделать mox.StrContains
или же mox.Regex
проверить дальше.