python– 启动py.test后,在读取请求的数据流后无法访问正文

python– 启动py.test后,在读取请求的数据流后无法访问正文,第1张

概述下午好.我正在使用pytest测试基于django-rest-framework的api.我有以下创建新对象的方法(方法取自here):class JSONResponse(HttpResponse): ''' An HttpResponse that renders its content into JSON. ''' d

下午好.

我正在使用pytest测试基于django-rest-framework的API.我有以下创建新对象的方法(方法取自here):

class JsONResponse(httpResponse):    """    An httpResponse that renders its content into JsON.    """    def __init__(self,data,**kwargs):        content = JsONRenderer().render(data)        kwargs['content_type'] = 'application/Json'        super(JsONResponse,self).__init__(content,**kwargs)@csrf_exempt@API_vIEw(('POST',))@permission_classes((IsAuthenticated,))def create_transaction(request):    """    The method takes the data in JsON-format.    If the data is correct Transaction object will created,otherwise it returns an error also in JsON-format.    """    stream = StringIO('[' + request.raw_post_data + ']')    data = JsONParser().parse(stream)    serializer = NewTransactionSerializer(data=data,many=True)    if serializer.is_valID():        serializer.save()        return JsONResponse(serializer.data,status=201)    else:        return JsONResponse(serializer.errors,status=400)

我写了下一个测试:

@pytest.mark.django_dbdef test_create_method(clIEnt):    correct_data = '''{ "var1": "111","var2": "222","var3": 2 }'''    clIEnt.login(username='[email protected]',password='test')    data = Json.loads(correct_data)    response  = clIEnt.post('/rest2/create_transaction/',format='Json')    content = Json.loads(response.content)    assert content[0]['var1'] == '111'    assert content[0]['var2'] == '222'    assert content[0]['var3'] == 2    assert response['Content-Type'] == 'application/Json'    assert response.status_code == 201

启动pytest时显示以下内容:异常:从请求数据流读取后无法访问正文.当我将数据发布到网址时,它就破了.
当我在shell中运行相同的代码时,代码运行没有问题.我是新手测试,可能会错过一些东西,请帮忙.最佳答案如果您正在使用django-rest-framework,那么您可以使用request.data而不是尝试自己解析请求中的Json

http://www.django-rest-framework.org/api-guide/requests/

 stream = StringIO('[' + request.raw_post_data + ']') data = JsONParser().parse(stream)

这可以替换为

data = request.data
总结

以上是内存溢出为你收集整理的python – 启动py.test后,在读取请求的数据流后无法访问正文全部内容,希望文章能够帮你解决python – 启动py.test后,在读取请求的数据流后无法访问正文所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存