有任何方法可以从下面的代码中模拟total_seconds()吗?
start = datetime.now()
...
end = datetime.now()
diff = (end - start).total_seconds()我试过了,但发现了这个错误
TypeError:不可排序类型: MagicMock() > int()
发布于 2018-10-16 20:59:21
这是一个很难理解的例子,但它可以给出一些提示:
from datetime import datetime
import unittest
def need_test():
start = datetime.datetime.now()
end = datetime.datetime.now()
diff = (end - start).total_seconds()
return diff
class SimpleTestCase(unittest.TestCase):
def setUp(self):
datetime_mock = mock.patch(__name__ + ".datetime")
self.datetime_mock = datetime_mock.start()
def test_need_test(self):
self.datetime_mock.datetime.now().__sub__().total_seconds.return_value = 123
self.assertEqual(need_test(), 123)首先,应该在mock.patch(__name__ + ".datetime")上修改mock.patch.object(module.where.is.your.function, "datetime")。在那之后,self.datetime_mock.datetime.now() (也许)可以替换为self.datetime_mock.now()
此示例并不是进行此类测试的首选方法,但它可以解决您的问题。
https://stackoverflow.com/questions/52843581
复制相似问题