@pytest.fixture
デコレータで前処理/後処理が書けるので、テストで共通するログイン処理を前処理として作成した例です。
import requests
import pytest
@pytest.fixture
def login_session():
with requests.Session() as session:
res = session.post(
"ログイン先のURL",
data=(
{
"id": "kuma",
"pass": "emon",
}
),
)
if res.status_code != 200:
raise Exception(res.text)
yield session
def test_resource1(login_session):
# login_session を使ってテスト
res = login_session.get("リソースのURL")
assert res.status_code == 200
with を使用したので後処理の記述が無いですが、以下のパターンで定義すれば良いです。
@pytest.fixture
def setup_teardown():
# テストごとの事前処理
# 例えば、データベースの接続を確立するなど
yield # 例えば、データベースの接続を返すなど
# テストごとの事後処理
# 例えば、データベースの接続を閉じるなど
def test_hoge(setup_teardown):
# setup_teardown からの値を使ってテスト
コメント