gpt4 book ai didi

python-3.x - 当我断言一个方法被调用时,如何使用通配符字符串? Python3 模拟

转载 作者:行者123 更新时间:2023-12-05 00:46:31 26 4
gpt4 key购买 nike

当使用 mockcall() 对象和 assert_has_calls 时,我很难断言给定的字符串已与末尾附加未知值。

例如:

待测代码:

mystring = 'a known string with an unknown value: {0}'.format(unknown_value)
method_to_call(mystring)

当前测试代码:

with mock.patch('method_to_call') as mocked_method:
calls = [call('a known string with and unknown value: {0}'.format(mock.ANY)]
call_method()
mocked_method.assert_has_calls(calls)

这给了我一些类似的东西:

AssertionError: Calls not found.
Expected: [call('a known string with and unknown value: <ANY>')]

如何断言给定的字符串已传递给方法但允许未知值?

最佳答案

您可以使用 callee lib 对方法调用中使用的字符串进行部分匹配:

from callee import String, Regex

with mock.patch('method_to_call') as mocked_method:
call_method()
mocked_method.assert_called_with(String() & Regex('a known string with an unknown value: .*'))

或者,如果您不想添加另一个库并且确定知道调用的顺序,则可以从调用 args 中提取字符串,然后使用正则表达式进行匹配

import re

with mock.patch('method_to_call') as mocked_method:
call_method()
argument_string = mocked_method.call_args[0][0]

pattern = re.compile("a known string with an unknown value: .*")
assert pattern.match(argument_string)

关于python-3.x - 当我断言一个方法被调用时,如何使用通配符字符串? Python3 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60037666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com