gpt4 book ai didi

python - 如何模拟实例变量

转载 作者:行者123 更新时间:2023-11-28 19:29:01 24 4
gpt4 key购买 nike

我正在尝试为这样的类编写测试:

from public_library import SuperClass
from another_library import Foo


class MyClass(SuperClass):

def __init__(self):
# Call super class
super(MyClass, self).__init__()

self._foo = Foo(
name='Some Name',
thing='Some Thing',
# self.something is defined in SuperClass.__init__()
cool=self.something.cool(),
)

在我的测试中,我模拟了 Foo 类并调用了 assert_called_once_with() 以确保正确设置了 self._foo。但是,我不知道如何获取 self.something.cool() 的返回值。

当然,我可以将返回值设置为 self 下的实例变量并在我的测试中使用它,但这似乎是一个丑陋的解决方案。有没有一种方法可以使用 patch() 来做到这一点?

最佳答案

测试逻辑的推荐方法是在最后断言预期结果。鉴于我们不知道您的逻辑,您可以期望返回任何值。运行单元测试时,您实际上可以调用您的函数并获得返回值。一个常见的例子:

def parse_http():
response = socket.recvfrom(2048) # you don't want to wait for a connection to test your logic, so you mock it, how?
return response[response.find('\r\n\r\n'):]

@patch('socket', 'recvfrom')
def testParseHttp(socket_recv_from):
socket_recv_from.return_value = 'HTTP 1.1\r\n\r\nsomeresponse'
assert parse_http() == 'someresponse'

希望这能解决您的问题,因为我的目的是解释模拟返回值和断言返回值。

  • 代码未经测试也不应该工作,这只是一个例子

关于python - 如何模拟实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42238107/

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