Как я могу использовать 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 проверить дальше.

Другие вопросы по тегам