当使用Django.test.client.post时,我收到了错误的请求

2024-06-16 13:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pytest django对我的django项目进行单元测试。观点是

def news(request):
    """
    Interface for newslist
    """
    page = 1
    if request.method == 'POST':
        content = request.body
        try:
            content = json.loads(content)
        except ValueError as error:
            return err_response("Value Error of post: {}".format(error))
        if 'page' in content:
            page = content['page']
    articlelist = Article.objects.all().order_by('-time')
    paginator = Paginator(articlelist, 10)
    try:
        current_list = paginator.page(page)
    except InvalidPage as error:
        return err_response(error)
    # coping with the paginator
    ...
    newsnum = len(Article.objects.all())
    return JsonResponse({
        'newsnum': newsnum,
        'pagelist': list(pagelist),
        'data': [{
            'title': newsitem.title,
            'source': newsitem.source,
            'time': newsitem.time.strftime("%Y-%m-%d %H:%M:%S"),
            'content': newsitem.content,
            'href': newsitem.href,
            'image': newsitem.image,
        } for newsitem in current_list]
    }, status=200)

当我使用pytest django测试它时

@pytest.mark.django_db
def test_view_news(client):
    """
    Test view news
    """
    url = reverse("news")
    data = {
        'page': 1
    }
    response = client.post(url, data=data)
    assert response.status_code == 200

它给出了错误的请求和代码400。但是当我使用client.get()时,响应是正常的(代码200)

DEBUG = True
ALLOWED_HOSTS = ['*']

谁能告诉我发生了什么事


Tags: djangodatareturntimepytestresponserequestpage