[pytest] フィクスチャにパラメータを渡す

ログインシナリオを例に挙げます。

自動テストを実行する場合、通常、ログインするアカウントは構成ファイルからランダムに選択されます。ログインするユーザーを指定する必要がある場合は、パラメーター化されたデコレーターを追加する必要があります。実装は次のとおりです。

# conftest.py
@pytest.fixture(scope="session")
def user(request):
    try:
        username = request.param
    except AttributeError:
        username = "random user"
    return username

"""使用默认用户登录"""
def test_login(user):
    print(f"获取用户信息:{
      
      user}")

--> 获取用户信息:random user

"""使用指定用户登录"""
@pytest.mark.parametrize("user", ["lan"], indirect=True)
def test_login(user):
    print(f"获取用户信息:{
      
      user}")

--> 获取用户信息:lan

さらに複雑にすると、通常、ログインには複数の手順があるため、ログインのカプセル化関数をフィクスチャとしてカプセル化し、ユーザー名とパスワードを渡して、ユースケースに直接ログインします。

@pytest.fixture
def auto_login(user):
    print(f"Fixture 内进行登录操作: {
      
      user}")
    return user

"""未指定用户,选取随机用户"""
def test_fixture(auto_login, user):
    print(f"用例内登录的用户是: {
      
      auto_login}")

--> Fixture 内进行登录操作: random user
--> 用例内登录的用户是: random user

"""已指定用户"""
@pytest.mark.parametrize("user", ["lan"], indirect=True)
def test_fixture(auto_login, user):
    print(f"用例内登录的用户是: {
      
      auto_login}")

--> Fixture 内进行登录操作: lan
--> 用例内登录的用户是: lan

おすすめ

転載: blog.csdn.net/lan_yangbi/article/details/129086339