gpt4 book ai didi

pytest - @parametrize - 我可以@parametrize 使用 fixture 给出的数据进行测试吗?

转载 作者:行者123 更新时间:2023-12-04 16:45:51 25 4
gpt4 key购买 nike

使用 python 3.8 和 pytest 5.3.2

在 conftest.py 中,我有一个从 json 配置文件读取数据的装置,为了在多个测试中重用从 json 配置文件中读取的数据。

配置.json

{"username":"user", "endpoints":["https://www.something.com/url1", "https://www.something.com/url2"]}

conftest.py


def pytest_addoption(parser):
parser.addoption("--configuration", action="store", default="configuration.json")


@pytest.fixture(scope="session")
def configuration(request):
configuration= None
configuration= request.config.getoption("--configuration")
with open(configuration, 'r') as f:
configuration= json.load(f)
return configuration

这很好用:


class TestService():
def test_something(configuration)
assert configuration['username'] == 'user'

在这种情况下,测试从配置 fixture 读取数据,配置 fixture 从 configuration.json 文件读取数据。

问题是当我想将此数据与 @parametrize 一起使用时:

我想转换这种方法:


@mark.parametrize('endpoint', [
"https://www.something.com/url1", "https://www.something.com/url2"
])
def test_endpoints_parametrizzato(endpoint):
print(endpoint)
assert requests.get(endpoint).status_code == 200

用这种方法


@mark.parametrize('endpoint', configuration['endpoints'])
def test_endpoints_parametrizzato(endpoint):
print(endpoint)
assert requests.get(endpoint).status_code == 200

但这不会起作用,因为@parametrize 不会“看到”我想用来对其进行参数化的 fixture 。我读了很多文章,但我无法理解我是否做错了什么或者我无法参数化从 fixture 读取数据。有人可以帮我再次解释吗?我读了

最佳答案

讨论 here你不能。

你可以使用a custom test generator

关于pytest - @parametrize - 我可以@parametrize 使用 fixture 给出的数据进行测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com