首页 > 解决方案 > DRF,在 perform_authentication() 中,request.user 的测试仅在运行多个测试时设置为空字符串

问题描述

当我自己运行测试时,测试总是通过,但是即使在同一个测试类中与另一个测试一起运行时,它也会失败。我已经找到了没有设置 AnonymousUser 的 perform_authentication() 方法的原因,它被设置为一个空字符串。并非所有测试都发生这种情况,但可能是我编写的 415 个测试中的 20%。我对代码所做的更改是使用 Authorization 标头并删除了将凭据放入登录请求正文的代码。这不应该影响现在失败的大多数测试。

如果我通过捕获异常并退出该方法来覆盖 perform_authentication() 测试工作正常,但这显然不是我想要做的。

我会显示代码,但不确定要显示什么。测试有很多层,因为需要在许多端点上进行相同的测试。

有人对此授权的工作方式有更好的了解吗?

标签: python-3.xdjangodjango-rest-framework

解决方案


您可以使用 rest_framework.APITestCase 来做到这一点。

self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + token)

推荐阅读