簡體   English   中英

如何將 arguments 傳遞給 pytest 夾具?

[英]How to pass arguments to a pytest fixture?

I'd like to create a session with specific user email and password, for that I need to pass these two pieces of information to a pytest fixture as arguments.

我這樣做的嘗試:

from pytest import fixture
from api_methods import ApiMethods


@fixture(scope="session")
def user_session():

    def _update_credentials(email, password):
        user_credentials = {
            "email": email,
            "password": password
        }
        return user_credentials

    session = ApiMethods()
    session.get_authorized(_update_credentials)
    return session

The problem is that _update_credentials returns a function object instead of JSON, which raises TypeError: Object of type function is not JSON serializable

我該怎么做才能正確地為這個夾具提供 email 和密碼? 請幫幫我:)

您似乎想要做的是將工廠用作固定模式,如下所示:

from pytest import fixture
from api_methods import ApiMethods


@fixture(scope="session")
def update_credentials():
    def _update_credentials(email, password):
        user_credentials = {
            "email": email,
            "password": password
        }
        return user_credentials

    return _update_credentials


@fixture(scope="session")
def user_session(update_credentials):
    user_credentials = update_credentials("email1", "password1")
    session = ApiMethods()
    session.get_authorized(user_credentials)

    return session

但似乎你可以這樣做:

from pytest import fixture
from api_methods import ApiMethods


@fixture(scope="session")
def user_session():
    user_credentials = {
        "email": email,
        "password": password
    }
    session = ApiMethods()
    session.get_authorized(user_credentials)

    return session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM