使用python 3.8和pytest 5.3.2
在conftest.py中,我有一个夹具,可以从json配置文件中读取数据, 为了在几次测试中重复使用从json配置文件读取的数据。
{"username":"user", "endpoints":["https://www.something.com/url1", "https://www.something.com/url2"]}
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'
在这种情况下,测试从配置夹具读取数据,而配置夹具从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不会“看到”我要用于参数化的灯具。我阅读了很多文章,但是我无法理解我做错了什么,还是无法参数化从灯具读取数据。有人可以帮我再次解释吗?我读了