假设我有一个HTTP URL列表,例如
endpoints = ["e_1", "e_2", ..., "e_n"]
我想运行n
测试,每个端点一个。我该怎么办?
一次测试所有端点的简单方法是
def test_urls():
for e in endpoints:
r = get(e)
assert r.status_code < 400
或类似的东西。但是,正如您所看到的,这是对所有n
端点的一项测试,我想要的粒度要多一点。
我已经尝试过使用夹具
@fixture
def endpoint():
for e in endpoints:
yield e
但是,显然,Pytest并不真正喜欢灯具中的“多产量”,并且会返回yield_fixture function has more than one 'yield'
错误
答案 0 :(得分:1)
按照Parametrizing fixtures and test functions中的示例,您可以通过以下方式实现测试:
{"A":{"isInstallment":true,"isRecurring":true,"price":"4.0","sku":"abc"},
"B":{"isInstallment":false,"isRecurring":true,"price":"1.0","sku":"def"}}
此操作将import pytest
endpoints = ['e_1', 'e_2', ..., 'e_n']
@pytest.mark.parametrize('endpoint', endpoints)
def test_urls(endpoint):
r = get(endpoint)
assert r.status_code < 400
test_urls
次运行,每个端点一次:
n