Django覆盖率报告生成器.xls导出测试

时间:2016-02-17 22:37:34

标签: django coverage.py test-coverage

我使用coverage来测试使用报告构建器代码导出xls文件的视图。

这是视图代码:

from report_builder.models import Report
from report_utils.mixins import DataExportMixin, generate_filename
import re
from rest_framework import viewsets
from rest_framework.views import APIView
from rest_framework.response import Response

class DownloadFileView(DataExportMixin, View):

    #def dispatch(self, *args, **kwargs):
        #return super(DownloadFileView, self).dispatch(*args, **kwargs)

    def process_report(self, report_id, user_id,
                       file_type, to_response, queryset=None):
        report = get_object_or_404(Report, pk=report_id)
        user = User.objects.get(pk=user_id)
        if not queryset:
            queryset = report.get_query()

        display_fields = report.get_good_display_fields()
        #import pdb; pbb.set_trace()
        objects_list, message = self.report_to_list(
            queryset,
            display_fields,
            user,
            preview=False,)
        title = re.sub(r'\W+', '', report.name)[:30]
        header = []
        widths = []
        for field in display_fields:
            header.append(field.name)
            widths.append(field.width)

        if to_response:
            return self.list_to_xlsx_response(
                objects_list, title, header, widths)


    def get(self, request, *args, **kwargs):
        #report_id = 3
        report_id= kwargs["report_id"]
        file_type = 'xls'
        user_id = 2
        return self.process_report(
            report_id, user_id, file_type, to_response=True)

这是我为它写的测试:

class test_reports_download(TestCase):
    fixtures = ['test_data_cost_control_app.json']

    def test_reports_select_get(self):
        request = HttpRequest()
        request.method = 'GET'
        DownloadFileView.as_view()(request, report_id = 1, file_type = 'xls', user_id =2)

Coverage几乎标记了所有已测试的视图代码,除了这2行:

header.append(field.name) 
widths.append(field.width) 

知道为什么吗?,我感谢任何帮助。

提前致谢

0 个答案:

没有答案