Получение сообщения "Authentication Credentials Were not Provided" при тестировании конечной точки DRF на Locust

Я пытаюсь провести нагрузочное тестирование конечной точки, которая позволяет пользователям создавать посты с помощью locust, стоит упомянуть, что пользователи должны быть аутентифицированы, прежде чем они смогут получить доступ к этой конечной точке.

Проблема: Когда я обращаюсь к конечной точке с помощью locust, я продолжаю получать ошибку "Authentication provided were not provided", хотя я сделал это, и я также настроил свою конечную точку на прием токена (я использую функцию токена 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',
        ...
    ],
}
Вернуться на верх