我在接口自动化参数化时碰到这样的问题, pytest.mark.parametrize需要的参数是由其他接口调取过来的,但是接口调用涉及到了环境的获取,环境获取是再fixtures中设置的,导致parameterize中无法拿到数据,因为这些依赖的数据都是一些基础数据的id,不想做依赖
不知道有什么办法解决?
自己再网上搜索到一种解决方案如下,每个用例数据写一个fixture,感觉很难受,有没有办法直接 pytest.mark.parametriz("arg", list(success_data_values()))
类似这种用法:
@pytest.fixture
def quanbu_info():
info = Information()
return info.gen_successful_data()[3]
@pytest.fixture
def one_pictures():
info = Information()
return info.gen_successful_data()[1]
@pytest.fixture
def title_too_long():
info = Information()
return info.gen_fail_data()[0]
@pytest.fixture(params=["one_pictures", "quanbu_info"])
def success_arg(request):
params = request.getfixturevalue(request.param)
return params
@pytest.fixture(params=["title_too_long"])
def fail_arg(request):
params = request.getfixturevalue(request.param)
return params
class TestArticleCreate:
def setup_class(self):
self.article_api = ArticleApi()
self.ids = []
def teardown_class(self):
logger.info(f"清理数据{self.ids}")
self.article_api.delete(self.ids)
def test_create_success(self, success_arg):
logger.info(f"创建文章{success_arg}")
resp = self.article_api.create(success_arg)['body']