はじめに
Locustの公式ページではloginのエンドポイントへPOSTリクエストを投げる例が示されています。
しかし、エンドポイントへのアクセスにBasic認証な場合にLocustでどのようにすればいいのかは記載されておらず調べる必要があったので、調べた内容をメモしておきます。
コード例
locustfile.py
from locust import HttpUser, task, between
from requests.auth import HTTPBasicAuth
class QuickstartUser(HttpUser):
def on_start(self):
auth = HTTPBasicAuth(username="hoge", password="hogePass")
self.client.get("/token", auth=auth)
@task
self.client.get("/hoge")
結論としては、上記のように requestsライブラリのHTTPBasicAuthでauthオブジェクトを作成して、clientに渡すことで認証できました。(ちなみにclientに利用されている HttpSessionはrequests.Sessionを継承しています。)
requestsのAuthenticationの内容を確認すると、HTTPProxyAuth やHTTPDigestAuthもあるので、Proxy認証やDigest認証も対応できそうです。
おわり
Locustを使うのは初めてだったのですが、pythonでシナリオが書け、Docker Imageも配布されていて使い勝手が良かったのでこれからも負荷試験する際にはお世話になろうと思います。
それでは、素敵なLocustライフを!