pytestフレームワーク上級自習シリーズ | 間接パラメータ

書籍の出典: Fang Lizhi Liang Lili 「pytest フレームワークと自動テスト アプリケーション」

先生の授業内容や実験ノートを勉強しながら整理してみんなで共有してください、違反しているものは削除されますのでよろしくお願いします!

要約投稿を添付してください: pytest フレームワーク高度な自習シリーズ | 要約


indirect は、argnames またはブール値のサブセットです。より複雑なシナリオに対応するには、request.param を介して、指定されたパラメーターの実際のパラメーターをパラメーターと同じ名前のフィクスチャにリダイレクトします。デフォルトの間接値は False です。mark.parametrize の後のデータを使用します。indirect が True の場合、フィクスチャ内のデータが使用されます。

コードは以下のように表示されます。

import pytest

@pytest.fixture()
def max(request):
    return request.param - 1

@pytest.fixture()
def min(request):
    return request.param + 1

@pytest.mark.parametrize('min, max', [(1,2),(3,4)])
def test_indirect(min, max):
    assert min <= max
    
@pytest.mark.parametrize('min, max', [(1,2),(3,4)], indirect=True)
def test_indirect_indirect(min, max):
    assert min >= max
    
@pytest.mark.parametrize('min, max',[(1,2),(3,4)], indirect=['max'])
def test_indirect_part_indirect(min, max):
    assert min == max
D:\SynologyDrive\CodeLearning\WIN\pytest-book\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py" --path D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-4/test_indirect.py
Testing started at 9:23 ...
Launching pytest with arguments D:/SynologyDrive/CodeLearning/WIN/pytest-book/src/chapter-4/test_indirect.py in D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-4

============================= test session starts =============================
platform win32 -- Python 3.7.7, pytest-5.4.1, py-1.11.0, pluggy-0.13.1 -- D:\SynologyDrive\CodeLearning\WIN\pytest-book\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\SynologyDrive\CodeLearning\WIN\pytest-book
collecting ... collected 6 items

test_indirect.py::test_indirect[1-2] PASSED                              [ 16%]
test_indirect.py::test_indirect[3-4] PASSED                              [ 33%]
test_indirect.py::test_indirect_indirect[1-2] PASSED                     [ 50%]
test_indirect.py::test_indirect_indirect[3-4] PASSED                     [ 66%]
test_indirect.py::test_indirect_part_indirect[1-2] PASSED                [ 83%]
test_indirect.py::test_indirect_part_indirect[3-4] PASSED                [100%]

============================== 6 passed in 0.03s ==============================

Process finished with exit code 0

indirect=True、min と max に対応する実際のパラメータは同じ名前のフィクスチャにリダイレクトされ、min と max はフィクスチャ データを使用します。

indirect=['max']、max に対応する実際のパラメータのみをフィクスチャにリダイレクトします。min は次のデータを使用し、max はフィクスチャ データを使用します。

実際、これは間接的なパラメータ化の方法であり、indirect=True の場合、値をテストに渡す前に、値を受け取るフィクスチャを使用してテストをパラメータ化することができます。

おすすめ

転載: blog.csdn.net/guolianggsta/article/details/131695062