この記事を読んでわかること!
- pytestの参考に使ってね
実行環境
・OS…Windows
・Python…3.9.0
【サンプル】実行ログに名前を付与したい
下記のような実行時のログで[]内を自由に変更する
src\tests\test_login.py::TestRoot::test_login_normal[001] PASSED [100%]
paramsをjson形式でもち、keyに[]内に表示したい文字列を設定するやり方
class TestRoot():
"""TestRoot"""
params = {
# ログイン
"001": ("user_id", "password", '{"result": true}'),
}
@pytest.mark.parametrize(["user_id", "password", "expected"], list(params.values()), ids=list(params.keys()))
def test_login_normal(self, client, id, user_id, password, expected):
result = client.post("/api/login", data=json.dumps({
"user_id": user_id,
"password": password
}))
result_json = json.loads(result.data.decode())
assert expected == json.dumps(result_json, ensure_ascii=False)
【サンプル】Key値によって細かな条件を付与したい
keyにテストNoを入れているときなどにvalueのタプルにテストNoを組み込むことでテストNoによって細かな条件を組み込むことが可能になります。
class TestRoot():
"""TestRoot"""
params = {
# ログイン
"001": ("user_id", "password", '{"result": true}'),
}
@pytest.mark.parametrize(["id", "user_id", "password", "expected"], [tuple([id[0]]) + id[1] for id in zip(params.keys(), params.values())], ids=list(params.keys()))
def test_login_normal(self, client, id, user_id, password, expected):
# idによって条件を指定
result = client.post("/api/login", data=json.dumps({
"user_id": user_id,
"password": password
}))
result_json = json.loads(result.data.decode())
assert expected == json.dumps(result_json, ensure_ascii=False)