我对单元测试有疑问。patched 方法不返回元组列表,而只返回一个元组:
我的代码
from date import Date
from ditreport import DIT_report
from unittest import TestCase
from unittest.mock import patch, Mock
def mock_get_uuid_messages_with_tmpls():
result = [('43e89d3a-af91-465f-a2db-3147988d1168',), ('93963bf6-9f75-4ffe-80e6-745307ef0a10',),
('88e68d67-8969-4059-9f6c-ff161879eb38',), ('39191cbd-79bb-483a-8df7-04aaf72253f1',),
('44a685c4-fb12-4431-ae18-3fb220e4d3e7',), ('3eef8189-7509-4dc1-9d71-c04f1cfc0d88',),
('4736beae-aa55-4bb3-b41d-3f94b1b178d1',), ('260db4a6-aab8-4d34-b293-cbf5fe6c7400',),
('7b73dfe0-5b8a-4a63-8607-43827eeac4c0',), ('fb51668f-0d2f-4958-911d-07d57a73fe56',)]
return result
class TestDIT_report(TestCase):
def setUp(self):
self.date_start='2020-01-12'
self.date_end = '2020-02-01'
self.configfile='config/config.def.xml'
self.param='covid'
self.report = DIT_report(self.date_start, self.date_end, self.configfile)
@patch('ditreport.DIT_report.get_uuid_messages_with_tmpls', side_effect=mock_get_uuid_messages_with_tmpls())
def test_get_uuid_messages_with_tmpls(self, get_uuid_messages_with_tmpls):
messages_uuid = get_uuid_messages_with_tmpls()
self.assertEqual(10,len(messages_uuid))
messages_uuid 应该得到一个包含十个元组的列表,但得到第一个元组
在 /home/skif/PycharmProjects/reports 中使用参数启动单元测试 python -m unittest TestDIT_report.TestDIT_report.test_get_uuid_messages_with_tmpls
初始化配置
在 0.026 秒内运行 1 次测试
失败(失败=1)
1 != 10
预期:10 实际:1
Traceback(最近一次调用最后一次):文件“/home/skif/pycharm-2020/plugins/python/helpers/pycharm/teamcity/diff_tools.py”,第 32 行,在 _patched_equals old(self, first, second, msg) 文件中“/usr/lib/python3.8/unittest/case.py”,第 912 行,在 assertEqual assertion_func(first, second, msg=msg) 文件“/usr/lib/python3.8/unittest/case.py”中,第 905 行,在 _baseAssertEqual 中引发 self.failureException(msg) AssertionError: 10 != 1
在处理上述异常的过程中,又出现了一个异常:
Traceback(最近一次调用最后):文件“/usr/lib/python3.8/unittest/case.py”,第 60 行,在 testPartExecutor 产量文件“/usr/lib/python3.8/unittest/case.py”中,第 676 行,在运行 self._callTestMethod(testMethod) 文件“/usr/lib/python3.8/unittest/case.py”中,第 633 行,在 _callTestMethod method() 文件“/usr/lib/python3.8/unittest/ mock.py”,第 1325 行,在修补的 return func(*newargs, **newkeywargs) 文件“/home/skif/PycharmProjects/reports/TestDIT_report.py”,第 86 行,在 test_get_uuid_messages_with_tmpls self.assertEqual(10,len(messages_uuid ))
为什么我会收到此错误?也许我错过了什么参数?但我有一个类似的代码,它返回一个正常的元组列表。