gpt4 book ai didi

python - py.test 将一个测试的结果传递给另一个

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:49 25 4
gpt4 key购买 nike

目前我有这样的测试:

@pytest.mark.parametrize("param", [1,2,3])
def test_two_services(param):
id = check_service_one(param)
check_service_two(id)

有什么方法可以将此测试一分为二,其中第二个测试取决于第一个?

最佳答案

记得在边界处进行测试。因此,如果 id 的值完全取决于 param 并且如果 id 不是一些实现细节,而是定义行为的一部分被测系统,像这样拆分你的测试:

def test_service_one(param, id):
assert check_service_one(param) == id

def test_service_two(id):
check_service_two(id) # I'm assuming this does some assertion of its own.

@pytest.fixture
def param(param_and_id):
param, _ = param_and_id
return param

@pytest.fixture
def id(param_and_id):
_, id = param_and_id
return id

@pytest.fixture(
params=[
(1, EXPECTED_ID_FOR_PARAM_1),
(2, EXPECTED_ID_FOR_PARAM_2),
(3, EXPECTED_ID_FOR_PARAM_3),
],
)
def param_and_id(request):
return request.param

像这样,测试通过 check_service_two 的输入松散耦合,匹配 check_service_one 的预期结果(并通过 test_service_one 中的断言检查) >,而不是 test_service_two 严重依赖于 test_service_one。因此,测试可以按任意顺序运行,并且任何一个测试都可以独立运行(无需先运行另一个测试)。

关于python - py.test 将一个测试的结果传递给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613883/

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