python - 使用 django.test.client.post 时出现错误请求
问题描述
我使用 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 = ['*']
谁能告诉我发生了什么?
解决方案
推荐阅读
- php - PHP在创建对象时从数组中获取对象
- reactjs - 如何加载组件中的所有 url,并且 onclick 应该使用特定于所选项目的状态变量填充表?
- java - XSD 双重绑定到 BigDecimal
- signature - 椭圆曲线数字签名格式
- c# - 带有标签页的 Xamarin 表单在每个标签页中都有数据表单输入页面
- git - 如何更改 Azure DevOps 主机 Git Repo 的默认分支名称
- swift - SwiftUI 在按钮内获取 SF 图像
- python - ZeroDivisionError 即使在使用 try 和 except 之后
- error-handling - 如果没有结果,则从 for 循环返回结果或不返回任何内容
- python-3.x - 有没有一种方法可以遍历字典并在 while 循环中使用它?