[英]Getting "Authentication Credentials Were not Provided" when testing DRF endpoint on Locust
我正在嘗試對允許用戶使用 locust 創建帖子的端點進行負載測試,值得一提的是,用戶在訪問此端點之前需要經過身份驗證。
問題:當我使用蝗蟲訪問端點時,我不斷收到錯誤消息“未提供提供的身份驗證”,盡管我已經這樣做了,而且我還配置了我的端點以接受令牌(我使用的是默認的 DRF 令牌功能)。 知道我做錯了什么嗎? 任何幫助將不勝感激。 下面是我的代碼:
蝗蟲檔案
class ListPostUser(HttpUser):
wait_time = between(1, 5)
@task(3)
def create_post(self):
data = {
"title": "This is another random title",
"body": "This is the body of a randomly titled post"
}
headers = {
"Authorization": "Token 508e650b0ca1613818939089190a1661a75865b1"
}
response = self.client.post("blog/create", json=data, headers=headers)
print(response)
print(response.json())
@task
def comment_detail(self):
self.client.get("blog/comment/1")
@task(2)
def post_detail(self):
self.client.get("blog/post/1")
def on_start(self):
self.client.post("login/", json={"username": "username", "password": "mypassword"})
查看文件
class CreatePostAPI(APIView):
permission_classes = (IsAuthenticated, )
def post(self, request):
serializer = CreatePostSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=self.request.user)
return Response(serializer.data, status=status.HTTP_200_OK)
我還應該注意端點在 POSTMAN 上工作正常,我只在使用 Locust 進行負載測試時才收到錯誤
不確定這是否會幫助您找到真正的問題,但您可以通過檢查response.request
來調查發送的確切負載,如下所示:
print(response.request.headers)
print(response.request.data)
我終於找到了解決問題的方法,我需要做的就是將TokenAuthentication
添加到 settings.py 文件中的默認身份驗證類列表中
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':
[
'rest_framework.authentication.TokenAuthentication',
...
],
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.