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

 当我繁华尽落_821 发布于 2023-01-31 10:27

下午好.

我正在使用pytest测试基于django-rest-framework的api.我有以下方法创建一个新对象(从这里采取的方法):

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_db
def test_create_method(client):
    correct_data = '''{ "var1": "111",
                        "var2": "222",
                        "var3": 2 }'''
    client.login(username='test2@github.com', password='test')
    data = json.loads(correct_data)
    response  = client.post('/rest2/create_transaction/', data, 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时显示以下内容:Exception: You cannot access body after reading from request's data stream.当我将数据发布到网址时,它就破了.当我在shell中运行相同的代码时,代码运行没有问题.我是新手测试,可能会错过一些东西,请帮忙.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有