liu
(测开16期学委-Donkey)
1
@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
我想这样去写,但是似乎行不通
Jaxon
(霍格沃兹-修然)
2
既然写了get_datas方法,为什么不能一步到位呢,yaml里可以设置字典格式,每个case去调用的时候,根据字典的key去取对应的value;给get_datas方法传入一个key,返回对应的value。每个case都可以这样取值进行参数化
liu
(测开16期学委-Donkey)
4
老师,可能我描述有问题,data.yml那块我是没问题的,我想知道既然fixture可以返回一个列表供调用,我是否可以在pytest.mark.parametrize(这个里面去调用fixture函数,从而实现参数化)
Jaxon
(霍格沃兹-修然)
5
绕远路的方法:
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