Django API测试以获取带有参数的请求

时间:2020-05-29 08:19:46

标签: python rest django-rest-framework

我正在测试。我的代码适用于非参数获取请求。但是如何在Rest api中进行测试时传递参数。

from rest_framework.test import RequestsClient
from rest_framework.test import APIRequestFactory
from configparser import ConfigParser
config = ConfigParser()
config.read('config.ini')
import django
django.setup()
from analyse.views_noquery import AverageTurnover

factory = APIRequestFactory()
request = factory.get('http://127.0.0.1:8000/average/turnover/start_date=2019-01-1/end_date=2019-01-1/')
view = AverageTurnover.as_view()(request)
#response = view(request)
print(view.data)

我的views.py文件

class AverageTurnover(APIView):
    '''Average Turn Over'''
    #permission_classes = [IsAuthenticated]
    def get(self, request, start_date, end_date):
        dataset = requests.get(config['url']['API_FETCH_URL']).json()
        turnover_data = []
        for data in dataset:
            data_date = datetime.datetime.strptime(data['Date'], "%d-%b-%Y").strftime("%Y-%m-%d")
            if data_date > start_date and data_date < end_date and data['Open']>data['Close'] :
                turnover_data += [data['Turnover (Rs. Cr)']]
        return Response({"Average Turnover" : sum(turnover_data)/len(turnover_data)})

1 个答案:

答案 0 :(得分:0)

您可以传递带有parameter: value对的字典arg,例如:

response = factory.get('http://127.0.0.1:8000/my-endpoint', {"param1": "value1"})

这将生成GET请求,并带有以下网址:http://127.0.0.1:8000/my-endpoint?param1=value1

检查docs