[英]Appium + Python(pytest) Parallel Testing Using Parameterization Problem
[英]Python testing with parameterization from function return
我一直在嘗試使用pytest
解決 python 測試,但未能找到有效的示例配置 - 盡管有些配置很接近。 這是我的案例研究:
@pytest.fixture
def vil_check():
code
return [(v1,v2,v3), (...), (...)]
@pytest.mark.parameterize("v1,v2,v3", vil_check):
def test_one(v1,v2,v3):
assert v1 < 2
assert v2 > 5
....
我正在嘗試遵循此示例:
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected):
assert eval(test_input) == expected
但是使用fixture
來提供列表: [("3+5", 8), ("2+4", 6), ("6*9", 42)]
。
但是,此配置不起作用:
@pytest.mark.parametrize("v1, v2, v3", vil_check)
def test_max(v1, v2, v3):
assert abs(v1) <= 5
錯誤是 pytest 沒有看到 vil_check 返回可迭代。 似乎有一種方法可以使用pytest_generate_tests
來完成此任務,但我對如何編寫它持空白。
根據 OP 的評論,因為vil_check
不需要是夾具,所以您可以執行以下操作 - fixture decorator from
and
在下面it in
:
def vil_check():
# code
yield from [(v1,v2,v3), (...), (...)]
@pytest.mark.parametrize("v1,v2,v3", vil_check()):
def test_one(v1,v2,v3):
assert v1 < 2
assert v2 > 5
# code
幾點:
parametrized
,如果你設置了--strict-markers
這可能會給你錯誤。:
vil_check
中使用了yield from
而不是return
。 如果列表很大,這將是有效的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.