簡體   English   中英

在 Locust 上測試 DRF 端點時獲取“未提供身份驗證憑據”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM