はじめに
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ライフを!