测试Django Rest Framework POST尽管调用工作,但返回500

时间:2017-05-31 18:37:13

标签: django django-rest-framework

更新

此问题是由于我未在APIClient标头中包含令牌而引起的。这已经解决了。

我在project.json有一个标准的ModelViewSet。我正在尝试使用API​​Client来测试端点。

/test-endpoint

此调用与我在sample_call中设置的参数一起使用。它返回201.然而,当我运行测试时,我得到500.如何修改它以使201通过?

我使用from rest_framework.test import APIClient ... # During this process, a file is uploaded to S3. Could this cause the issue? Again, no errors are thrown. I just get a 500. self.client = APIClient() ... sample_call = { "name": "test_document", "description": "test_document_description" } response = self.client.post('/test-endpoint', sample_call, format='json') self.assertEqual(response.status_code, 201)

运行测试

为了排除这一点,我将样本调用复制粘贴到Postman中并毫无问题地运行它。我相信500状态代码来自于我正在测试呼叫而不是在实时环境中使用它。

AssertionError之外没有抛出任何错误消息:

  

AssertionError:500!= 201

完整的测试结果

python src/manage.py test modulename

预计会出现S3警告。否则,一切都显得正常。

1 个答案:

答案 0 :(得分:3)

在Django / DRF中调试失败的测试用例:

  • 在断言之前放置import pdb; pdb.set_trace()并按照@Igonato的建议查看request.content,或者您只需添加print(request.content),就不会感到羞耻。< / p>

  • 通过添加-v 3

  • 来提高测试的详细程度
  • 使用点表示法调查特定的测试用例:python src/manage.py test modulename.tests.<TestCase>.<function>

我希望记住这些是有用的。