Django测试返回魔术模拟和未修补的返回值

时间:2014-10-28 16:50:29

标签: python django unit-testing django-unittest

有一份我正在嘲笑的报告。报告以字典形式返回 - 报告中的每个度量标准都是一个键,值是n长度的数组(报告中的天数)。在没有从报告返回数据的情况下,生成0的数组。报表中只有少数几个度量标准使用返回值进行模拟,因此预计返回的报表字典只包含具有值的特定度量标准。

当运行测试并断言输出是否等于预期结果时,魔术模拟将作为给定度量的值插入。我写了几个像这样的测试,之前没有遇到过。

from django.test import TestCase
from mock import patch

@patch.object(Report, 'clicks_data')
@patch.object(Report, 'sent_messages_data')
@patch.object(Report, 'run_for_group')
def test_group_report_return_csv_data(self, run_group, sent_msgs, clicks):
    networks = self.networks ## defined in the setUp
    group_report = GroupReport(networks, datetime(2014, 10, 24, 0, 0, 0), datetime(2014, 10, 26, 0, 0, 0), self.group.id)
    group_report.run() ## this calls the Report.run_for_group() 

    run_group.return_value = None ## builds a property containing the raw data of all metrics recorded during those days; never returns a value but calls outside database
    sent_msgs.return_value = [123, 111, 321]
    clicks.return_value = [500, 345, 456]

    result = {    'sent_msgs' : [123, 111, 321],
                  'clicks': [500, 345, 456],
                  'opened_msgs': [0, 0, 0],
                  'bounced_msgs': [0, 0, 0] }

    self.assertEqual(result, group_report.email_group_report.get_csv_data())

错误讯息 -

AssertionError: ....

+  { 'sent_msgs': <MagicMock name='sent_msgs_data' id='4389821456'>,
+    'clicks': <MagicMock name='clicks_data' id='4408776976'>,
-    'sent_msgs': [123, 111, 321],
-    'clicks': [500, 345, 456],
     'opened_msgs': [0,0,0],
     'bounded_msgs': [0,0,0 }

模拟的指标的值显示魔术模拟,而不是声明的实际返回值。这种语法有什么问题?

0 个答案:

没有答案