Python单元测试何时测试值或对象相等性



我正在测试以下代码。

main.py

import helpers
def do_something(some_arg):
...
return helpers.help_do_something(some_arg)

test_main.py

import unittest
from unittest import mock
class TestDoSomething(unittest.Testcase):
@mock.patch('path.to.patch')
def setUp(self, *_):
import main
self.main = main
@mock.patch('main.helpers')
def test_0_1(self, helpers_mock):
ret = self.main.do_something('test_arg')
self.assertIs(ret, helpers_mock.help_do_something.return_value)

当我测试do_something的返回值时,我的直觉告诉我,比较应该断言对象相等,而不是值相等。我这样想对吗?我很难解释为什么会出现这种情况。

更普遍地说,在单元测试中,我们应该在什么时候测试对象相等与值相等?

您不太可能希望在此处使用对象相等。唯一的情况是,如果您的mock函数将返回与您正在测试的函数相同的对象(而不是值相等的对象(,那么只有当它们从输入参数(这里不是这样(或从一些常见的对象池中获取对象时,才会发生这种情况。

最新更新