Как проверить строки, которые выполнялись при обработке http-запроса в проекте Django - PullRequest
0 голосов
/ 04 июля 2019

Я занимаюсь разработкой приложения Django, оно успешно работает прямо сейчас.Я хочу отследить, сколько строк кода выполняется при отправке HTTP-запроса.

Я просмотрел cover.py, но его нужно включить в представление, из-за этого я не могучтобы получить покрытие кода всего сценария, то есть от import операторов до return Response.

Ниже приведен код, который я реализовал.

Это файл моделей


from django.db import models

class Puppy(models.Model):
    """
    Puppy Model
    Defines the attributes of a puppy
    """
    name = models.CharField(max_length=255)
    age = models.IntegerField()
    breed = models.CharField(max_length=255)
    color = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def get_breed(self):
        return self.name + ' belongs to ' + self.breed + ' breed.'

    def __repr__(self):
        return self.name + ' is added.'

class PuppyStore(models.Model):
    """
    Puppy store, this supply all puppy needs
    """
    puppy = models.ForeignKey(Puppy,on_delete=models.CASCADE)
    food = models.CharField(max_length=25)

Файл просмотра

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Puppy
from .serializers import PuppySerializer
from coverage import Coverage

@api_view(['GET'])
def list_puppies(request):
    try:
        cov = Coverage()
        cov.erase()
        cov.start()
        qset = Puppy.objects.all()
        resp = PuppySerializer(qset, many=True)
        cov.stop()
        cov.save()
        cov.html_report()
        return Response(resp.data, status=status.HTTP_200_OK)
    except Exception as e:
        return Response({'error': str(e)})

файл сериализатора

from rest_framework import serializers
from .models import Puppy

class PuppySerializer(serializers.ModelSerializer):
    class Meta:
        model = Puppy
        fields = ('name', 'age', 'breed', 'color', 'created_at', 'updated_at')

Ниже изображениеокончательный отчет о покрытии HTML после нажатия http://127.0.0.1:8010/api/v1/all_puppies в моем браузере

enter image description here

enter image description here

Там я могу проверить код в границах, но я хочу проверить покрытие кода от import операторов до оператора return response.

Есть ли какая-либо утилита / промежуточное программное обеспечение, которое служит для этой цели, пожалуйстапредложить, если таковые имеются.

...