请教下pytest参数化的问题

@pytest.mark.parametrize里面可以调用fixture装饰器函数返回的参数吗?比如我想在fixture里面返回读取data.yml的列表,是否可以在pytest.mark.parametrize调用呢,格式怎么写呀?

def get_datas():
    with open("./data.yml",'rb') as f:
        datas = yaml.safe_load(f)
        return datas

@pytest.fixture(scope='class', params=get_datas()['add']['data'])
def add_fixture(request):
    return request.param

@pytest.mark.parametrize("a,b,res",add_fixture

                             )
    def test_add(self, a, b, res):
        assert self.caculator.add(a, b) == res

我想这样去写,但是似乎行不通

既然写了get_datas方法,为什么不能一步到位呢,yaml里可以设置字典格式,每个case去调用的时候,根据字典的key去取对应的value;给get_datas方法传入一个key,返回对应的value。每个case都可以这样取值进行参数化

老师,可能我描述有问题,data.yml那块我是没问题的,我想知道既然fixture可以返回一个列表供调用,我是否可以在pytest.mark.parametrize(这个里面去调用fixture函数,从而实现参数化)

绕远路的方法:

test_account = ["user1", "user2"]
@pytest.fixture()
def login(request):
    user = request.param
    print("登录账户: %s" %user)
    return user

@pytest.mark.parametrize("login", test_account, indirect=True)
def test_login(login):
    user_name = login
    print("login的返回值是:%s" % user_name)
    assert 1 == 1