【Python】pytest参考

この記事を読んでわかること!
  • 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)
タイトルとURLをコピーしました