【求助】接口测试参数化的数据,需要调用其他接口获取,如何处理

我在接口自动化参数化时碰到这样的问题, pytest.mark.parametrize需要的参数是由其他接口调取过来的,但是接口调用涉及到了环境的获取,环境获取是再fixtures中设置的,导致parameterize中无法拿到数据,因为这些依赖的数据都是一些基础数据的id,不想做依赖
image

不知道有什么办法解决?

自己再网上搜索到一种解决方案如下,每个用例数据写一个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']

西西老师说过,原则上设计尽量不要使用用例依赖。
如果真要使用,可以考虑使用fixture,把依赖项放在fixture里。

B接口依赖A接口返回的数据,可以在B接口的测试用例中,先调用A接口,然后把A接口的数据传给B

关闭